题目1:证明,即使不为子类创立构造器,编译器也会为你合成一个默认的构造器,该构造器将调用基类的构造器。
package iteye; public class child extends father { public static void main(String []args) { child c=new child(); } } class father { public father(){ System.out.println("I am father's constructor"); } }
输出:
I am father's constructor
题目2:证明基类构造器(a)总会被调用;(b)在导出类构造器之前被调用
package iteye; public class child extends father { public child(){ System.out.println("I am child's constructor"); } public static void main(String []args) { child c=new child(); } } class father { public father(){ System.out.println("I am father's constructor"); } }
输出为:
I am father's constructor I am child's constructor
题目3:创建两个带有默认构造器的类A和类B。从A中继承产生一个名为C的新类,并在c内创建一个B类成员,不要给C编写构造器,创建一个C类的对象并且观察结果。
package iteye; public class C extends A { B b=new B(); public static void main(String []args) { C c=new C(); } } class A { public A(){ System.out.println("I am A's constructor"); } } class B { public B(){ System.out.println("I am B's constructor"); } }
输出为:
I am A's constructor I am B's constructor
这是一个最简单的demo,但是这个demo涉及到类加载顺序的问题。
加载流程是这样的:
(1)入口方法是C类的main方法,运行之前需要把C类加载进内存,加载的时候发现C类继承自父类A所以要先把A类加载进内存。所以第一步是初始化A类的类变量和静态块。
(2)初始化C类的类变量和静态块。
(3)执行main函数
(4)第一行是创建一个C的实例,先初始化A的实例变量
(5)调用A的构造函数
(6)初始化C的实例变量
(7)调用C的构造函数
相关推荐
CnForm 所有窗口基类 --CnBaseForm 业务窗口基类 --CnMainForm 主窗口或子窗口基类 --CnEditForm 数据编辑窗口基类 --CnQueryForm 数据查询窗口基类 --CnFrameForm MDI Frame窗口基类 --CnDialog 对话框窗口...
C++语言程序设计综合练习题 程序设计题 1. 利用递归函数求24与16的最大公约数。 2. 输入三角形的三边长 a,b,c,输出三角形的面积s。求面积的公式为: s=sqrt(L* (L-a)*(L- b)*(L-c)),其中L=(a+b+c)/2。 3. &&...
子对象重叠,虚基类,开销,向上映射,避免MI,修复接口
第1章 计算机与C++编程简介-------------------------------------------------1 1.1 简介--------------------------------------------------------------1 1.2 什么是计算机--------------------------------...
Java语言程序设计,第七章答案,郑莉,清华大学出版
在虚函数的基类与子类构造函数中调用虚函数。当生成子类对象时,函数的调用顺序是怎样的
视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip及使用案例.rar
cshapr连接数据库--SqlHelper基类
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
该对象是一个基类,是Androd调用WebService时调用的一个对象封装。
多继承下的派生类构造函数必须同时负责该派生类的所有基类构造函数的参数传递。且构造函数和析构函数的调用顺序和单继承是一样的,先调用基类构造函数,再调用对象成员的构造函数,最后调用派生类的构造函数。那么...
安卓webView页面基类-BaseWebActivity,有网页加载进度条,有对手机显示网页的配置,有返回上一页等功能。
第7章 常量 7.1值替代 7.1.1头文件里的const 7.1.2const的安全性 7.1.3集合 7.1.4与C语言的区别 7.2指针 7.2.1指向const的指针 7.2.2const指针 7.2.3赋值和类型检查 7.3函数参数和返回值 7.3.1传递const值 7.3.2返回...
提供各种高级界面窗口的基类VC源码-窗体界面-
◇ 第七章 指针与引用 - 课前索引 - 第一节 指针变量的定义与使用 - 第二节 动态内存分配 - 第三节 指针运算 - 第四节 指针与常量 - 第五节 指针作函数参数 - 第六节 指针与数组 - 第七节 函数指针 - 第八...
C#基类库大全2013-04-12. C#基类库大全2013-04-12. C#基类库大全2013-04-12.
写出一个类People,并由该类做基类派生出子类Employee和Teacher。其中People类具有name、age两个保护成员变量,分别为String类型和整型,且具有共有的getAge()成员方法,用于返回age变量的值,并编写一个两个参数的...
recyclerview 封装基类适配器和基类holder 以及分割线使用
dao层基类dao层基类dao层基类dao层基类dao层基类
第1章 CEGUI的简介 - 5 - 1.1CEGUI历史和本书使用的版本 - 5 - 1.2 CEGUI的编译和例子介绍 - 5 - 1.2.1CEGUI源代码的简介 - 5 - 1.2.2CEGUI源代码编译 - 7 - ...第3章 CEGUI基类的实现 - 39 - .......