22.3 Extends 构造方法的执行顺序
2024-09-03 10:50:31
/*
* 1.有子父类继承关系的类中,创建父类对象未调用,执行父类无参构造
* 2.有子父类继承关系的类中,创建子类对象未调用,执行顺序:默认先调用 父类无参构造---子类无参构造
* 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造
*
* * 为什么要调用父类构造?
* 因为需要给父类的成员变量初始化
* 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码
* */ 1.创建子类对象,使用子类无参构造,子类无参构造第一行代码没有调用其他构造。
故输出顺序:
父类无参构造---子类无参构造
public class ExtendsFunDemo {
public static void main(String[] args) {
// Dad6 d = new Dad6();
Kid6 k = new Kid6(); }
} class Dad6 {
public Dad6() {
System.out.println("父类无参构造");
} public Dad6(String name) {
System.out.println("父类有参构造");
}
} class Kid6 extends Dad6 {
public Kid6() {
System.out.println("子类无参构造");
} public Kid6(String name) {
System.out.println("子类有参构造");
}
}
执行结果
2.
* 1.子类构造方法第一行使用this调用该类的有参构造,所以执行顺序:
* (先执行无参中的this即(在执行this中的有参,有参第一行没有调用)父类无参--)子类有参--子类无参
* 2.同理,子类构造第一行使用super调用父类的有参构造,执行顺序:
* (先执行无参中的super即)父类有参---子类无参
public class ExtendsFunDemo2 {
public static void main(String[] args) {
Kid2 k = new Kid2();
}
} class Kid2 extends Dad6 {
public Kid2() {
this("小明");
// super("大明");
System.out.println("子类无参构造");
} public Kid2(String name) {
// super("大明");
System.out.println("子类有参构造");
}
}
输出
3.
* 创建子类对象,调用子类的有参构造方法
* 执行顺序:
* (子类构造方法第一行无调用)父类无参---子类有参
* 同理:
* 子类有参第一行调用子类无参(子类无参第一行未调用,先执行父类无参)
* 执行顺序:父类无参---子类无参--子类有参
public class ExtendsFunDemo3 {
public static void main(String[] args) {
Kid3 k = new Kid3("小明");
}
} class Dad3 {
public Dad3() {
System.out.println("父类无参");
} public Dad3(String name) {
System.out.println("父类有参");
}
} class Kid3 extends Dad3 {
public Kid3() {
// super("大明");
System.out.println("子类无参");
} public Kid3(String name) {
this();
System.out.println("子类有参");
}
}
输出
最新文章
- jQuery初级篇(一)
- HDU 4831 Scenic Popularity
- (转)Yale CAS + .net Client 实现 SSO(1)
- mongodb 、nosql、 redis、 memcached 是什么?
- hdu 5305Friends
- 擦肩而过的那块牌--记ACM_ICPC西安赛区现场赛
- java单元测试(Junit)
- js格式化日期工具类
- fhqtreap初探
- 在Unity3d中调用外部程序及批处理文件
- Ubuntu 登陆界面无限循环问题 以及 root用户无法使用命令问题
- 详解python2 和 python3的区别-乾颐堂
- 分享几套古典复古式的UI设计
- Linux磁盘扩容
- cocos2d-x CCScrollView 源代码分析
- 四十八 常用内建模块 HTMLParser
- MySQL MVCC原理
- 剑指Offer - 九度1355 - 扑克牌顺子
- 【HHHOJ】NOIP2018 模拟赛(二十四) 解题报告
- android/java经常使用的工具类源代码
热门文章
- 原生Canvas循环滚动弹幕(现金红包活动带头像弹幕)
- Python基础篇_实例练习1
- Druid连接池和springJDbc框架-Java(新手)
- 关于手机淘宝3.25bug我的一些思考与建议
- PHP中$$的应用
- Smallest Range II
- Building Applications with Force.com and VisualForce(Dev401)(十一):Designing Applications for Multiple Users: Proseving Data Quality
- 零基础使用Swift学习数据科学
- 斯坦福经典AI课程CS 221官方笔记来了!机器学习模型、贝叶斯网络等重点速查...
- 【转载】卸载Anaconda教程