class Depend
{
int i = 10;
public Depend()
{
print();
i = 20;
}
void print()
{
System.out.println("Depend=> " + i);
}
}
public class Qdb extends Depend
{
int i = 30;
public Qdb()
{
print();
super.print();
i = 40;
}
void print()
{
System.out.println("Target=> " + i);
}
public static void main(String[] args)
{
new Qdb();
}
}
回答:
初始化顺序是:
父类成员变量,父类构造函数,子类成员变量,子类构造函数
我们顺着初始化的顺序来说
首先程序从main方法开始执行,new Qdb(),这句话就是要new一个Qdb的对象,根据对象初始化的顺序,初始化子类之前必须要初始化父类,所以此时一系列的调用开始了
1,调用Qdb的父类Depend类的构造函数,在调用构造函数之前,成员变量是先于构造函数初始化的,这个时候Depend里面的i已经有值了,它的值就是10,在Depend构造函数里面,我们看到的第一句是:print方法,这个print方法我们要注意,它在Depend的子类也定义了,并且此次初始化是由子类Qdb发起的,所以实际上这个print方法调用的是Qdb里面定义的print,而这个时候有意思的事情就出现了,此时子类还没有出生呢,因为这个时候父类才正在构造之中,所以子类中此时的i还是0,而print正好打印出的是子类的i,所以第一次输出是0;
2,父类调用完子类的print后,把父类的i赋了值20,此时父类已经完全被构造出来了,马上就要开始构造子类了.
3,同理,在调用子类的构造函数之前,子类的i被赋了初值30,然后进入子类的构造函数,此时调用的也是print,这个就非常好理解了,这个print肯定是子类自己的print方法了,此时i已经构造好,当然,此时输出的值是30;
4,下一句super.print(),这句话显示的调用了父类的print方法,而此时父类的i已经在父类的构造函数里面改为20了,所以此次调用输出20.
5,然后再把子类的i的值设为50.
在以上过程中,如果掌握好了类的初始化顺序,是比较容易知道输出结果的.还有一点要记住,JAVA里面的方法是动态绑定的,而成员却是静态绑定的.父类里面调用的print之所以会输出0,就是因为print实际上调用的是子类的print,因为整个这场调用都是由new Qdb()这句话产生的.
摘自:http://topic.csdn.net/u/20080619/19/924c55b0-5919-46ad-8bf0-0c6425020253.html?seed=1780906883
分享到:
相关推荐
编译原理课后答案 编译原理(课后习题答案) 编译原理 编译原理答案 编译 原理PPT 编译原理课后习题答案 编译原理习题下载 编译原理答案下载
编译原理试题及答案\编译原理考试试题及答案编译原理试题及答案\编译原理考试试题及答案编译原理试题及答案\编译原理考试试题及答案 包你满意哈
编译原理试题汇总+编译原理期末试题(8套含答案+大题集)
编译原理试题及答案_编译原理考试试题及答案
《编译原理》课后习题答案第一章 第 1 章引论 第 1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标...
编译原理第三版课后习题答案编译原理第三版课后习题答案编译原理第三版课后习题答案编译原理第三版课后习题答案编译原理第三版课后习题答案
最全的编译原理期末考试题及答案,过一遍考试稳90+,包括了从导论、词法分析、语义分析到优化、目标代码生产的全部题目,题型有判断题、填空题、名词解释题、简答题、计算题。
编译每章后的习题及答案,不教不错的题目和答案,可以配合课本使用,效果更加
以前学编译原理时候老师提供给我们的编译原理的习题答案,希望对大家有帮助。
编译原理课后答案 清华大学版 编译原理的课后作业可以有效帮助我们学习这门课
编译原理习题答案 陈文宇 第1-13章参考答案 答案基本都有
关于计算机清华大学出版的编译原理的课后习题部分答案,总共有十章,包括第3、5、6、7、8、9、10、11、12、13章,希望可以帮助大家
大家来下载!编译原理课后答案啊!速度来的 的积分啊!
编译原理基础课后习题答案 刘坚 编著 西安电子科技大学出版社 PDF 这个是第一版的答案,第二版有大部分类似的,有些不全,之前看过一个要分的,这个给大家免费
编译原理 也称龙书 习题答案 答案很详细
编译原理练习题,附带答案。题目为英文,答案在文件附带的图片中。
《编译原理教程》(胡元义)第三版课后习题答案
chapter2-chapter7的课后习题答案,每一个章节的答案不全,是老师批改作业时统计的大多数学生的问题,个别同学不具代表性的问题没有统计。 附带全书代码。
编译原理课后习题答案(科学出版社 张幸儿),这个只有部分课后习题的答案,但一些比较重要的题目都有详解。