JAVA继承求助
class A {public B a = new B();
}
public class B extends A {
int x = 1000;
public void f() {
System.out.println(a.x);
}
public static void main(String[] args) {
new B().f();
}
}
上面代码运行出错:Exception in thread "main" java.lang.StackOverflowError
现在希望在函数F()里面输出这个子类B的属性X的值。但想通过父类A里面的属性输出,这个属性还不能是STATIC型的。可行吗? --------------------编程问答-------------------- 你这个类定义的
new B()时,必new A(),因为A是B的超类。
new A()时,必new B(),因为B是A的默认属性。
这个不就死循环了么,对象都建在Stack(堆)上,不溢出才怪 --------------------编程问答-------------------- 晕死,死循环你都能设计出来,不得不佩服楼主! --------------------编程问答--------------------
这个解释很到位 --------------------编程问答-------------------- B继承A ,new B();时现执行new A();又因为 new A();时必须初始化public B a = new B();这样就会重复执行上面的步骤形成了一个死循环,每一个方法都在一个线程栈中执行的,每次调用构造函数都会从线程中分配一块栈内存,死循环就会把线程现有栈内存耗尽,所以就会抛出 java.lang.StackOverflowError。 --------------------编程问答-------------------- 楼主高人啊 --------------------编程问答-------------------- http://bbs.csdn.net/topics/390267880#r_80065845
这里都给你回答的很清楚了,又发一帖,lz是在散分??? --------------------编程问答-------------------- 死循环AB循环创建 --------------------编程问答-------------------- 楼主不用那么费事,只要这样就死循环了:
class A {
public B a = new B();
}
public class B extends A {
public static void main(String[] args) {
new B();
}
} --------------------编程问答-------------------- 除
补充:Java , Java相关