class OA {
OA() {System.out.println("OA");}
class IA {
IA() {System.out.println("OA.IA");}
void f() {System.out.println("OA.IA.f()");}
}
IA ia = new IA();
void set(IA a) {ia = a;}
void g() {ia.f();}
}
class OB extends OA{
OB() {System.out.println("OB"); set(new IA());}
class IA extends OA.IA {
IA() {System.out.println("OB.IA");}
void f() {System.out.println("OB.IA.f()");}
}
}
public class NestedInner {
public static void main(String[] args) {
new OB();
}
}
输出结果为
OA.IA
OA
OB
OA.IA
OB.IA
我的理解是先初始化父类OA的成员变量IA 然后是父类自己 然后是子类 自己 ,但是子类里面有调用了set方法
子类里的成员变量IA继承自OA.IA所以在调用OA里的IA 然后是子类的成员IA的构造函数 我的理解是这样 希望大家来讨论一下 |
|