关于继承内部类——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

时间: 2025-01-02 12:38:45

关于继承内部类——java编程思想示例程序分析的相关文章

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层反编译知识.   1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

学习JAVA编程思想4的好方法

问题描述 跪求大神总结学习JAVA编程思想4的好方法. 解决方案 解决方案二:Java编程思想是很好的学习Java的材料,但对初学者来说有的地方不是能够轻易明白的.因为Java涉及的概念和技术非常广泛,建议先把基础夯实,比如类,接口,继承,多态等,这些有了基础后可以再深入学习正则表达式.线程.io等,一定要动手编写代码,并确实明白代码的执行逻辑.解决方案三:1.背把那些死知识背下来,复习巩固2.敲可以按书本例子课后题敲,对没掌握的可以重复敲3.测找其他题测试掌握情况,最好找SCJP题库的题,因为

java编程思想动态代理实现事务

问题描述 各位大侠好,最近在研读Java编程思想,在看到动态代理这块的时候遇到一点问题,是一个课后习题.大概是这样的:使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功时(不抛出任何异常)执行提交,而在其执行失败时执行回滚.你的提交和回滚都针对一个外部的文本文件,该文件不再Java异常的控制范围内.你必须注意操作的原子性.感觉这道题很有意义,但是由于是新手,自己在读题和解题的时候都比较困惑,所以希望各位达人能帮忙解答一下.最好有个完整的例子.小弟仅有的45分全部奉上! 解决方

java-求大神推荐几本关于Java编程思想的书

问题描述 求大神推荐几本关于Java编程思想的书 有时结果总是超乎自己的想象,可能是自己的思维模式跟不上计算机的算法 解决方案 建议你还是多做些联系,参与一些项目练练实际经验吧,看编程思想的书时需要一定基础的. 解决方案二: thinking in java 解决方案三: effective java

java多线程问题,java 编程思想书中的例子

问题描述 java多线程问题,java 编程思想书中的例子 在看java编程思想书中的多线程一节,书中对wait,notify,notifyall举了一个例子,模拟给汽车涂蜡和抛光的过程, 因为抛光任务在涂蜡之前是不能尽兴的,反之,涂蜡任务在涂另外一层蜡之前,必须要等抛光任务结束.代码如下: 显示一个汽车类: class Car{ private boolean wanOn=false; public synchronized void waxed(){ waxOn=true; notifyAl

java-关于JAVA编程思想中synchronized和ReentrantLock

问题描述 关于JAVA编程思想中synchronized和ReentrantLock 在学习JAVA编程思想并发一章时,关于synchronized和ReentrantLock的例子运行 结果与书中不一致.代码如下: package thinking.in.java.chapter21; class Pair { private int x,y; public Pair(int x, int y) { this.x = x; this.y = y; } public Pair() { this(

关于java问题-java编程思想的23种设计模式有哪些

问题描述 java编程思想的23种设计模式有哪些 例如,单例设计模式其它就不知道了?可以的话在给个例子描述一下 解决方案 根据caozhy的提示,再整理一下 1. Memento(备忘录) 2. Chain of Responsibility(责任链) 3. Observer(观察者 4. Command(命令模式) 5. State(状态模式) 6. Interpreter(解释器 7. Strategy(策略模式) 8. Iterator(迭代子 9. Template Method(模板方

寻找java编程思想

问题描述 谁有第一版到最新版的java编程思想,能给我传下不,小弟在此谢过...有的话请传到zhhj0104@qq.com 解决方案 解决方案二:如果有的話我也想要啊解决方案三:我也想要..先谢谢了解决方案四:去作者网站.早期版本都是直接提供下载的.解决方案五:这破书就算了吧

Java编程思想学习笔记——枚举类型

前言 关键字enum可以将一组具名的值有限集合创建一种为新的类型,而这些具名的值可以作为常规的程序组件使用. 正文 基本enum特性 调用enum的values()方法可以遍历enum实例,values()方法返回enum实例数组,且数组中元素保持在enum声明时的顺序. public class TestEnum { public static void main(String[] args) { Fruit[] values = Fruit.values(); for (Fruit frui