Java中子父類建構函式特點
阿新 • • 發佈:2018-12-26
/* 子父類中建構函式的特點 在子類構造物件時,發現,訪問子類建構函式時,父類也運行了。 為什麼呢? 原因是:在子類的建構函式中第一行有一個預設的隱式語句。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; */ } }