| 
 
| 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的构造函数  我的理解是这样 希望大家来讨论一下
 | 
 |