1. 程式人生 > >Java中子父類建構函式特點

Java中子父類建構函式特點

/*
 子父類中建構函式的特點
在子類構造物件時,發現,訪問子類建構函式時,父類也運行了。
為什麼呢?
原因是:在子類的建構函式中第一行有一個預設的隱式語句。super();

子類的例項化過程,子類中所有建構函式預設都會訪問父類中的空引數的建構函式。

為什麼子類例項化的時候要訪問父類中的建構函式呢?
那是因為子類繼承了父類,獲取到了父類中的內容(屬性),所以在使用父類內容之前,要
先看父類是如何對自己的內容進行初始化的。

所以子類在構造物件時,必須訪問父類中的建構函式。
為了完成這個必須的動作,就在子類的建構函式中加入了super()語句。

如果父類中沒有定義空引數建構函式,那麼子類中的建構函式必須使用super明確
要呼叫父類中哪個建構函式。同時子類建構函式中使用了this呼叫了本類建構函式時,
那麼super就沒有了。因為super和this都只能定義在第一行。所以兩個之中只能有一個。

注意:super語句必須要定義在子類建構函式的第一行。因為父類的初始化動作要先完成。
*/

class Fu{
    int num;
    Fu(){
        num=10;
        System.out.println("Fu hello world    ");
    }
    Fu(int x){
        System.out.println("Fu x="+x);
    }
}
class Zi extends Fu{
    Zi(){    
        //super();    //呼叫的就是父類中的空引數的建構函式。
        System.out.println("Zi    hello world    "+num);
    }
    Zi(int x){
        System.out.println("Zi x="+x);
    }
}
public class ExtendsDemo1{
    public static void main(String[] args){
        new Zi();
        /*
            結果:
                Fu hello world
                Zi    hello world      10;
        */
    }
}