gpt4 book ai didi

Java : Class inheriting self

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:49 26 4
gpt4 key购买 nike

我知道这毫无意义:我只是觉得这很有趣,我想进一步了解当您创建一个继承自身的类时会发生什么,导致堆栈溢出崩溃的机制。令人惊奇的是,Java 允许您从一开始就构建这样的结构。

我只是在猜测,但是 JVM 是将自己置于一个无限循环中,试图在实例化它之前解析该类,还是它实际上是在无休止地实例化该类的多个副本?

我应该更具体一些;我正在使用内部类派生自封闭类。

 public class Outside {
private int outsideValue;

public class Inside extends Outside {
private int insideValue;
public Inside(int val) {
insideValue = val;
}
}

public Outside() {
Inside o = new Inside(0);
}
}

public class Main {
public static void main(String args[]) {
Outside o = new Outside();
}
}

最佳答案

请记住,由于 Inside 扩展了 Outside,它有一个对 super()隐式调用,它是Outside 的构造函数(它又调用 Inside 的构造函数)等等。

您发布的代码在概念上与以下程序没有区别:

class A {
B b = new B();
}

class B extends A {
}

public class Test {
public static void main(String[] args) {
new A(); // Create an A...
// ... which creates a B
// ... which extends A thus implicitly creates an A
// ... which creates a B
// ...
}
}

关于Java : Class inheriting self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com