【发布时间】:2011-03-24 10:47:21
【问题描述】:
我知道这毫无意义:我只是觉得这很有趣,我想进一步了解当您创建一个继承自身的类时会发生什么,从而导致堆栈溢出崩溃。令人惊奇的是,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();
}
}
【问题讨论】:
-
@TurtleToes 那么,当你尝试这样做时实际发生了什么?
-
什么意思?我无法获得任何循环继承,您使用的是哪个版本? Inherit.java:1:涉及First的循环继承
-
尝试继承正在声明的类会导致编译错误(Windows/Cygwin 上的 jdk 1.6)。您使用的是什么版本的 Java?
-
使用内部类继承外部类
-
javac不是创建类文件的唯一方法。你也可以编辑一个来获得一个虚假的类。
标签: java oop inheritance