程序代码如下:classEgg2{protectedclassYolk{publicYolk(){System.out.println("Egg2.Yolk()");}publicvoidf(){System.out.println("Egg.Yolk.f()");}}privateYolky=newYolk();publi...
程序代码如下:
class Egg2{
protected class Yolk{
public Yolk(){System.out.println("Egg2.Yolk()");}
public void f(){System.out.println("Egg.Yolk.f()");}
}
private Yolk y=new Yolk();
public Egg2(){System.out.println("New Egg2");}
public void insertYolk(Yolk yy){y=yy;}
public void g(){y.f();}
}
public class BigEgg2 extends Egg2{
public class Yolk extends Egg2.Yolk{
public Yolk(){System.out.println("BigEgg2.Yolk()");}
public void f(){System.out.println("BigEgg2.Yolk.f()");}
}
public BigEgg2(){insertYolk(new Yolk());}
public static void main(String[] args){
Egg2 e2=new BigEgg2();
e2.g();
}
}
输出结果如下:
Egg2.Yolk()
New Egg2
Egg2.Yolk()
BigEgg2.Yolk()
BigEgg2.Yolk.f()
疑问:
在main()函数中首先执行new BigEgg2()语句,那么应该首先调用类BigEgg2基类Egg2的构造函数Egg2()从而首先打印出“New Egg2”,但是实际执行情况却是首先打印出“Egg2.Yolk()”,两次打印出的“Egg2.Yolk()”分别是程序执行那条语句打印出来的,请告知,小弟初学者!万分感谢!
同理,若类B继承自类A(A为基类),同时类A又包含一个普通的内部类C,类B包含一个普通的内部类D,调用new B()语句,构造器的执行顺序是什么?
展开