2017-03-03 187 views
-1

對象的副本(通過copy-constructor與int實例變量)是否獲取與原始對象相同的實例變量?如果是這樣,我想知道原始對象和複製對象是否引用相同的實例變量。看看下面的例子,如果我創建了一個現有的BankAccount的副本,它們是否都引用相同的實例變量balanceaccountNumber對象副本和原始副本的實例變量

public class BankAccount { private static int bankAccountCount = 0; private double balance = 0.0; private int accountNumber = 1; public BankAccount() { accountNumber += bankAccountCount ; bankAccountCount++; } public BankAccount(double startBalance) { this(); balance = startBalance; } public BankAccount(BankAccount accountToCopy) { // copy-constructor balance = accountToCopy.balance; accountNumber = accountToCopy.accountNumber;
+0

基元不是引用類型。你在這裏有不同的實例變量。 –

+0

不要問同樣的問題兩次。如果您想在原問題中添加更多信息,請使用問題下的[編輯]鏈接。 –

回答

0

實例變量是不是複製除非變量是static。 靜態變量屬於類而不是實例化對象。你的情況:

private static int bankAccountCount = 0; //Would all share the same value 
private double balance = 0.0; //would not transfer 
private int accountNumber = 1; //would not transfer 

爲了拷貝過來,你怎麼想的價值觀,你要麼需要修改的值的知名度,或者提供一個訪問方法來訪問值。

所以,如果你有兩個不同的對象,都與一個靜態變量:

public class Example{ 

    private static int counter = 0; 

    public Example(){ 
     counter ++; 
    } 
} 

當你創建這個類的一個對象

Example e = new Example(); 

計數器現在等於1

如果我們創建第二個對象:

Example e2 = new Example(); 

兩個對象中的計數器現在等於2。

+0

這只是半準確的,因爲**他在問他在他的第三個構造函數**中複製它們時會發生什麼。然而,它們是原始類型的,因此在兩個結果對象中不是參考和獨立的。 –

+0

有效的點。謝謝你指出。編輯 – Ryan

+0

@J和Ryan:如果accountNumber是另一個類的對象 – Coder