簡體   English   中英

構造函數鏈是否會在Java中創建多個對象?

[英]Will constructor chaining create more than one object in Java?

如果我使用此關鍵字調用同一類的另一個構造函數。 它會創建兩個對象嗎?

如果是這樣,下面的例子中哪個對象將處於活動狀態:

Class Sample {
    int a;
    String b;

    Sample() {
        this("Hello");
        a=10;
    }

    Sample(String temp) {
        b = temp;
    }    
}

我想知道構造函數鏈接的行為。 請解釋它是如何工作的?

不,構造函數鏈接不會創建其他實例,它只是執行鏈式構造函數的邏輯,允許您重用其代碼。

this("Hello"); 這里ll調用Sample(String temp)構造函數,它不會創建另一個對象。

正如其他人提到的那樣,你只會得到一個對象,每個構造函數初始化同一個對象。

最適合自己看看:

public class Sample {
    int a;
    String b;

    Sample() {
        this("Hello");
        a=10;
        System.out.println("B: "+ hashCode());
    }

    Sample(String temp) {
        b = temp;
        System.out.println("A: "+ hashCode());
    }

    public static void main(String[] args) {
        new Sample();
    }

}

請注意,如果您嘗試訪問未初始化的字段,那么在未完全初始化的對象上調用實例方法可能會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM