Java建構函式的執行

來源:互聯網
上載者:User

Java 在建立對象的時候會要執行它的建構函式。不僅如此,Java 還要執行父類的建構函式,往上一級一級直到沒有父類為止。對於初學者來說,有三個問題不容易搞懂:

1、父類的建構函式是否一定會執行?

2、是先執行子類的建構函式還是先執行父類的建構函式?

3、如果父類有多個建構函式,那麼 Java 會選擇哪一個?

- 父類的建構函式是否一定會執行?

是的,父類的建構函式一定會執行。所以如果某個類的層次很深,那麼它建立對象時就會要執行一大堆的建構函式。

- 是先執行子類的建構函式還是先執行父類的建構函式?

Java 會順著繼承結構往上一直找到 Object,然後從 Object 開始往下依次執行建構函式。先執行父類的建構函式,那麼子類的建構函式執行的時候就不需要擔心父類的成員是否初始化好了。

- 如果父類有多個建構函式,那麼 Java 會選擇哪一個?

如果父類有多個建構函式,那麼子類可以在建構函式中選擇其中一個(且最多隻能選擇一個)來執行。如果子類沒有選擇,那麼 Java 將會執行父類的預設建構函式。下面是一個例子:

父類:

view plaincopy to clipboardprint?
public class SuperClass {
public SuperClass() {
System.out.println("super class constructed.");
}
public SuperClass(String name) {
System.out.println("super class constructed with name: " + name);
}
}
public class SuperClass {
public SuperClass() {
System.out.println("super class constructed.");
}
public SuperClass(String name) {
System.out.println("super class constructed with name: " + name);
}
}

子類:

view plaincopy to clipboardprint?
public class SubClass extends SuperClass {

public SubClass() {

System.out.println("sub class constructed.");

}

public SubClass(String name) {

//這一句在文法上不是必須的。但有沒有這一句,執行起來不一樣。有了這一句,就表示子類的構造過程中調用

//的是父類的帶字串參數的建構函式,也就是 public SuperClass(String name) 這個方法。如果沒有這一

//句,就表示子類的構造過程中調用的是父類的預設建構函式。

super(name);

System.out.println("sub class constructed with name: " + name);

}

public static void main(String[] args) {

new SubClass();

new SubClass("world");

}

}

public class SubClass extends SuperClass {

public SubClass() {

System.out.println("sub class constructed.");

}

public SubClass(String name) {

super(name);

System.out.println("sub class constructed with name: " + name);

}

public static void main(String[] args) {

new SubClass();

new SubClass("world");

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.