服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

关于继承内部类――java编程思想示例程序分析


  关于继承内部类――java编程思想示例程序分析;
class egg2 {
protected class yolk {
public yolk() {
system.out.println("egg2.yolk()");
}
public void f() {
system.out.println("egg2.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()

运行顺序:
1、egg2 e2 = new bigegg2();子类在实例化之前,先调用父类构造方法,父类构造方法先初始化类成员;
有 private yolk y = new yolk();,y作为egg2类的成员先被初始化;先调用egg2内部类yolk的构造函数;打印出egg2.yolk();
2、调用egg2的构造函数;打印出egg2.yolk();
3、调用bigegg2的构造函数;因为它insertyolk(new yolk());这里的new yolk是bigegg2的内部类的实例;这个内部类继承了egg2中的内部类

;所以先调用了egg2中yolk的构造函数;打印出egg2.yolk();
4、调用bigegg2.yolk的构造函数;打印出bigegg2.yolk();
5、e2.g();打印出bigegg2.yolk();

我不知道分析的对不对,如果不对,请指教zhaoqb@neusoft.com
或者
zqb@hanhuasoft.com

扫描关注微信公众号