对象的副本(通过copy-constructor具有int
个实例变量)是否获得与原始对象相同的实例变量?如果是这样,我想知道原始对象和复制对象是否引用相同的实例变量。请看下面的示例,如果我创建现有BankAccount
的副本,它们是否都引用相同的实例变量balance
和accountNumber
?
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)
除非变量为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。