天天看點

子類能不能繼承父類的構造函數

一、子類能繼承父類的構造函數?

答案是不能的。構造函數是建立對象時完成時資料的初始化,當我們在new一個對象并傳入參數時,會自動調用有參數的構造完成參數的初始化,也就是屬性的初始化。試想子類中繼承父類的構造方法,不僅不符合構造方法的命名規則,即方法名和類名相同,而且也不符合一般方法的命名規則,即沒有傳回值。

二、舉例說明

第一個例子:父類有無參構造方法時

/*
父類
*/
public class Father{
    public Father(){
        System.out.println("父類的構造方法");
    }
}
/*
子類
*/
public class Son extends Father{
    public Son(){
        //super();此處為隐士調用
        System.out.println("子類的構造方法");
    }
}

public static void main(String[] args){
    Son son = new Son();
}

輸出結果為:
父類的構造方法
子類的構造方法
           

 當子類沒有調用父類的構造方法時,會隐士的調用父類的預設的構造方法,并且調用父類的構造方法預設在第一行。

 第二個例子:當父類隻有有參的構造方法時

/*
父類
*/
public class Father{
    public Father(int a){
        System.out.println("父類的構造方法");
    }
}
/*
子類
*/
public class Son extends Father{
    public Son(){
        super(1);
        System.out.println("子類的構造方法");
    }
}

public static void main(String[] args){
    Son son = new Son();
}

輸出結果為:
父類的構造方法
子類的構造方法
           

 如果父類隻有有參構造時,必須在子類的構造方法中手動調用父類的有參構造,不然編譯不通過。