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().g();
}

}答案为
OA.IA
OA
OB
OA.IA
OB.IA
OB.IA.f()如果把main里面改为new OB();
答案为
OA.IA
OA
OB
OA.IA
OB.IA
为什么呀???小第也学了半年的JAVA了连这个基本问题都没搞清楚很急啊.没有分了.大家请原谅,请指点我