G
gunwithlove
Unregistered / Unconfirmed
GUEST, unregistred user!
急:内部类的继承问题?
JAVA编程思想第七章(P172)问题:
/*本程序演示如何从内部类继承*/
package c07;
class Egg2
{
protected class Yolk
{
public Yolk()
{
System.out.println("Egg2.Yolk()");
}
public void f()
{
System.out.println("Egg2.Yolk.f()");
}
}
//以上定义了内部类Yolk,它有两个public方法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 //重载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()
请问它运行的顺序是怎样的?谢谢!
__________________
step by step
JAVA编程思想第七章(P172)问题:
/*本程序演示如何从内部类继承*/
package c07;
class Egg2
{
protected class Yolk
{
public Yolk()
{
System.out.println("Egg2.Yolk()");
}
public void f()
{
System.out.println("Egg2.Yolk.f()");
}
}
//以上定义了内部类Yolk,它有两个public方法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 //重载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()
请问它运行的顺序是怎样的?谢谢!
__________________
step by step