我有一个非常基本的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对象进行初始化。 ...等等,直到堆栈溢出为止。

10-02 11:21
查看更多