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

解决方案 »

  1.   

    栈溢出错误class Test{
    Test test=new Test();
    }你这样每次创建一个Test的实例时,都会又创建一个新的Test实例,因此是个死循环。
      

  2.   

    Test test=new Test();
    去掉...
      

  3.   

    interpb(曾曾胡)说的对可一在类里面放默认的构造器,但是不能new一个自己。
      

  4.   

    死循环啊,俺以前也是犯了一样的错。hoho!
      

  5.   

    Test test=new Test();
    死循环
      

  6.   

    class 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 类名 ();