[英]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.