Tur*_*oes 8 java oop inheritance
我知道这是毫无意义的:我发现它很有趣,我想更多地询问当你创建一个继承自身的类时会发生什么的机制,导致堆栈溢出崩溃.令人惊讶的是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();
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,因为Inside
extends 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
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3116 次 |
最近记录: |