为什么嵌套子类可以访问其父类的私有成员,而孙类不能?
可能类似于以下问题:为什么外部 Java 类可以访问内部类私有成员?或者使用子类中的 super 关键字访问超类私有字段。
但是有一些区别:子类可以访问其父类(并且仅最近的父类)的私有成员。
给定下面的示例代码:
public class T {
private int t;
class T1 {
private int t1;
public void test() {
System.out.println(t);
}
}
class T2 extends T1 {
private int t2;
public void test() {
System.out.println(t);
System.out.println(super.t1);
System.out.println(this.t2);
}
}
class T3 extends T2 {
public void test() {
System.out.println(t);
System.out.println(super.t1); // NG: t1 Compile error! Why?
System.out.println(super.t2); // OK: t2 OK
}
}
}