在一个没有方法的类中new一个本类的对象会出错
public class Problem
{

public static void main (String[] args)
{
Dog xiaohei = new Dog ();
System.out.println (xiaohei.colour);

}
}class Dog
{
int colour;
Dog xiaohei = new Dog();  //没有这句就没有问题(有这句编译没问题,执行有问题)。

}

解决方案 »

  1.   

    溢出,
    很个Dog类里面又new个Dog,相当于无限递归
      

  2.   

    有注释的那句前加一个static即可
      

  3.   

    意思是Dog xiaohei = new Dog();是在构造方法里面的吗
      

  4.   

    还是说编译的时候Dog也会被编译
    到new时又调用了Dog的构造方法
    而构造方法是在Dog类定义的时候就自动有了,这样出了这个方法又会回到new语句,又调用了构造方法所以就无限递归了。新手不懂
      

  5.   

    在Dog类中,xiaohei本来就是个成员变量,并且进行了初始化。因此在示例化Dog时,同时又给xiaohei初始化,而在初始化过程又是实例化一个Dog,这样就造成了无限递归。
      

  6.   

    我就是不懂为什么实例化Dog时会再次实例化。
    你的意思是两个xiaohei 是同一个吗,但我换个名字还是有问题啊。算了不纠结了,以后应该会懂得。刚开始学习很多概念都不是很清楚。
      

  7.   

    实例化Dog时会执行初始化类,给成员变量赋值。当然就要执行Dog xiaohei = new Dog();这一句,你可以自己加构造方法打印一句话,看看就知道了,会不断地创建对象。
      

  8.   

    你的意思是两个xiaohei 是同一个吗,
    不是同一个,
    每一个Dog里都有一个另外一个Dog,
    你实例化的时候,又需要实例化它的子Dog,子Dog也一样实例化它自己的子子Dog。没完没了