有这样三个类,Person,Student,GoodStudent。其中Student继承了Person,GoodStudent继承了Student,三个类中只有默认的构造函数,用什么样的方法证明在创建Student类的对象的时候是否调用了Person的构造函数,在创建GoodStudent类的对象的时候是否调用了Student构造函数?如果在创建Student对象的时候没有调用Person的构造函数(我也不知道什么情况下不会去调用,如果都是默认无参构造函数的话),那么采用什么样的手段可以调用父类的构造函数?
一、需要分析
1、Person,Student,GoodStudent三个类的继承关系
2、实现三个class的构造函数
3、打印信息查看各个类的构造函数是否被调用
二、技术点
1、弄清楚Java 类的无参构造函数是默认调用的
2、如果父类的构造函数是有参的,那么要在子类的构造函数的第一行加入super(args); 来确认对哪个父类构造函数的调用
代码:
代码如下 | 复制代码 |
packagecom.itheima;
/** * 9、 * 有这样三个类,Person,Student.GoodStudent。其中Student继承了Person,GoodStudent继承了Student, * 三个类中只有默认的构造函数,用什么样的方法证明在创建Student类的对象的时候是否调用了Person的构造函数, * 在创建GoodStudent类的对象的时候是否调用了Student构造函数?如果在创建Student对象的时候没有调用Person的构造函数 * ,那么采用什么样的手段可以调用父类的构造函数? * * @author [email protected] */
publicclassTest9 {
publicstaticvoidmain(String[] args) { Student s1 =newStudent(); System.out.println("-------------------------------"); Student s2 =newStudent(); System.out.println("-------------------------------"); GoodStudent g1 =newGoodStudent(); System.out.println("-------------------------------"); }
}
classPerson {
Person() { System.out.println("I'm Person!"); }
Person(String arg) { System.out.println(arg); }
Person(String arg1, String arg2) { System.out.println(arg1 + arg2); } }
classStudentextendsPerson {
Student() { super("have arg!");// System.out.println("I'm Student!"); }
Student(String arg) { super("have arg!","in Person"); System.out.println(arg); } }
classGoodStudentextendsStudent {
GoodStudent() { super("from GoodStudent!"); System.out.println("I'm GoodStudent!"); }
} |
打印构造函数的调用过程:
have arg!
I'm Student!
-------------------------------
have arg!
I'm Student!
-------------------------------
have arg!in Person
from GoodStudent!
I'm GoodStudent!
-------------------------------
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级