对象副本和原始副本的实例变量

时间:2017-03-03 23:45:06

标签: java object copy-constructor

对象的副本(通过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;

1 个答案:

答案 0 :(得分:0)

除非变量为static,否则实例变量将 NOT 复制。 静态变量属于类,而不是实例化对象。在你的情况下:

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。