[JavaSE] 子类继承父类,创建对象时构造函数运行过程

先总结:

 1. 构造函数创建规则
    a. 当类中没有构造函数,默认会自动创建一个无参构造函数(隐式)。
    b. 当类中有 有参 构造函数,则不会创建无参构造函数。
 2. 创建子类的对象,一定会调用父类的构造函数(无参或有参)。
    a. 情况一:当父类有无参构造函数,子类构造函数可写super(),也可不写。
    b. 情况二:当父类只有有参构造函数,则不会自动生成无参构造函数。子类的构造函数必须加上super(参数);
 3. 为什么一定会调用父类的构造函数(无参或有参)。
     a. 因为子类继承父类之后,获取到了父类的内容(属性/字段),而这些内容在使用之前必须先初始化,
     所以必须先调用父类的构造函数进行内容的初始化 

一.创建子类一定会调用父类的构造函数

package JavaSE;

public class Parent {
    public Parent(){
        System.out.println("我是父类的无参构造函数");
    }

    public Parent(int a){
        System.out.println("我是父类的有参构造函数");
    }
}

class Son extends Parent{
    public Son(){
        System.out.println("我是子类的无参构造函数");
    }

    public Son(int a){
        System.out.println("我是子类的有参构造函数");
    }

    public static void main(String[] args) {
         //Son son = new Son(); //运行结果:我是父类的无参构造函数 我是子类的无参构造函数
         //Son son = new Son(1); //运行结果:我是父类的无参构造函数 我是子类的有参构造函数
    }
}

二.父类没有无参构造函数,子类一定得显示写上super(参数),否则报错

报错
上图报错

这里写图片描述
上图运行结果:
我是父类的有参构造函数
我是子类的有参构造函数

猜你喜欢

转载自blog.csdn.net/Justszh/article/details/81409090