【发布时间】:2021-02-06 15:06:41
【问题描述】:
我有以下代码:
public Account() { #1
id = 0;
balance = 0;
interestRate = 4.5;
}
public Account(int newId, double newBalance) {
//this(); - option 1
//new Account(); - - option 2
id = newId;
balance = newBalance;
}
public Account(int newId) { #2
new Account();
id = novoId;
}
使用Account account = new Account(int); 创建对象时,它会从#2 到#1 到#2。
问题是选项 1 和选项 2 似乎呈现相同的行为(通过调试器查看),这似乎有点违反直觉。有人能解释一下吗?
【问题讨论】:
-
这两个示例的行为不应相同。在 Account 的构造函数中创建一个新的 Account 将开始递归创建,直到堆栈用完。
-
@NomadMaker 在这种情况下,不会递归创建
Account实例,因为new Account();将调用无参数构造函数,并且在该构造函数内部没有构造函数调用。 -
@Yousaf
new Account()怎么样? -
@NomadMaker 怎么样? OP 在实例中使用
new Account(int);创建,所以new Account()只会被调用一次。
标签: java oop object constructor