标题: 内部类的一些总结 庆礼可以来看一下 [打印本页] 作者: 周朋飞 时间: 2012-6-25 02:52 标题: 内部类的一些总结 庆礼可以来看一下 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的构造函数 我的理解是这样 希望大家来讨论一下作者: 孙飞 时间: 2012-6-25 06:40
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 Test3
{
public static void main(String[] args)
{
new OB();
}