class Test{
Test test=new Test();
public void f1(){
System.out.println("f1()");
}
public void f2(){
System.out.println("f2()");
}
}public class TestExtends extends Test{
public static void main(String[] args){
TestExtends a1=new TestExtends();
a1.f1();
}
}为什么出现 Exception in thread "main" java.lang.StackOverflowError
Test test=new Test();
public void f1(){
System.out.println("f1()");
}
public void f2(){
System.out.println("f2()");
}
}public class TestExtends extends Test{
public static void main(String[] args){
TestExtends a1=new TestExtends();
a1.f1();
}
}为什么出现 Exception in thread "main" java.lang.StackOverflowError
Test test=new Test();
}你这样每次创建一个Test的实例时,都会又创建一个新的Test实例,因此是个死循环。
去掉...
死循环
Test test=new Test();
}你这样每次创建一个Test的实例时,都会又创建一个新的Test实例,因此是个死循环。可以修改为:
class Test{
static Test test=new Test();
public void f1(){
System.out.println("f1()");
}
public void f2(){
System.out.println("f2()");
}
}public class TestExtends extends Test{
public static void main(String[] args){
TestExtends a1=new TestExtends();
a1.f1();
}
}static在声明的数据在内存中只有一份,静态成员变量能被每个实例对象所共享
java里面的单态设计模式就会用到这句话private static final 类名 引用变量=new 类名 ();