该子类是否从超类true继承一切?但是子类无法访问其超类的私有属性/方法,但可以访问它自己的属性/方法。所以我写了一个测试程序。但似乎子类没有一个!
class a {
private void set() {
System.out.println("a.set()");
}
}
public class b extends a {
// private void set() {
// System.out.pritln("b.set()");
// }
void f() {
set();
}
public static void main(String[] args) {
b b = new b();
b.f();
}
}
如果我在例子中注释掉b中的set()方法,它就不会编译。
有什么想法吗? JVM视图中的任何解释?
答案 0 :(得分:4)
是的,无法从派生类访问private
个方法。 protected
和public
是。{
当您在派生类中声明set
时,您可以访问此派生版本,因为它现在是该类的一部分(不再是private
基类方法)。
如果您尝试拨打super.set()
,则仍会收到错误。
编辑:aroth正在谈论的假设就是反思。 :)不要。
答案 1 :(得分:0)
这个问题毫无意义。私人是私人的。对当前班级以外的所有事物都不可见。如果您想要“受保护”,请使用它。
答案 2 :(得分:0)
如果你想要介于两者之间,可以使用“protected”修饰符而不是“private”修饰符; protected本质上是对除了子类之外的所有内容都是私有的。