[英]Accessing private method in Java
在java中,私有訪問修飾符具有高度限制性,只能在定義它們的類中訪問。
考慮這個例子。
package x;
public class Boom {
protected String name;
public Boom() {
}
private void aConfidentialInfo(){
System.out.println("Some confidential information...");
}
protected void display(){
System.out.println("In display method..");
aConfidentialInfo();
}
}
package y;
import x.Boom;
public class Hack extends Boom{
public Hack{
display();
}
}
在這里,當我運行類Hack
,它調用display,然后調用aConfidentialInfo
,它是Boom
類的私有成員。 Hack
類如何能夠訪問Boom
類的私有成員? 是不是私人訪問修飾符的侵權。 如何通過一些體面的推理來理解和解釋這一點?
不,它訪問Boom- display的受保護成員。 這是合法的 - 子類或包中的任何東西都可以訪問受保護的成員。 受保護的函數可以訪問私有成員,因為受保護的函數是Boom類的一部分。
由於多態性的魔力 ,這是可能的。
Hack 擴展了 Boom,因此可以訪問所有公共,包和受保護的字段和方法。 因此它可以調用受保護的display()
方法。 借助多態的魔力,在Hack中調用display會調用Boom的方法,該方法可以調用aConfidentialINfo()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.