继承中构造方法的执行顺序
- A:super(实参列表);语句 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
- B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
package com.itheima;
/*
* 继承中构造方法的执行顺序
* 在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法,
* 如果子类构造方法的第一行没有调用父类的构造方法,则会默认调用父类的无参构造(※注意:第一行不算注释)
* 肯定会先执行父类的构造,因为要先给父类的成员变量进行初始化,子类可能会使用到
* 为什么要调用父类构造?
* 因为需要给父类的成员变量初始化
*
* 我们可以使用super()在构造方法的第一行调用父类的构造方法
*
* 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造
*/
public class ExtendsDemo6 {
public static void main(String[] args) {
// Die d = new Die();
Zi z = new Zi();
}
}
class Die {
public Die() {
System.out.println("我是父类无参构造");
}
public Die(int num) {
System.out.println("我是父类有参构造");
}
}
class Zi extends Die {
public Zi() {
// super(1);
this(2);//不会再调用父类的无参构造了
System.out.println("我是子类无参构造");
}
public Zi(int num) {
// super(); //会默认调用父类无参构造
System.out.println("我是子类有参构造");
}
}