我有一个非常基本的Java理论问题。在下面的示例中,为什么Employee类递归地调用其self?
class Employee {
Employee emp = new Employee();
}
public class Manager extends Employee {
public static void main(String[] args){
Manager mgr = new Manager();
}
}
最佳答案
看一下代码在做什么:
当创建一个新的Manager
对象时,该Employee
对象的Manager
部分也将被初始化(因为Manager
扩展了Employee
)。
当Employee
部分初始化时,其emp
成员变量将被初始化。它将使用新的Employee
对象进行初始化。但是该对象还有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。该对象还具有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。该对象还具有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。该对象还具有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。该对象还具有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。该对象还具有一个emp
成员变量,该成员变量将使用新的Employee
对象进行初始化。 ...等等,直到堆栈溢出为止。