日期:2014-05-20  浏览次数:20728 次

构造方法问题,子类main()方法有new对象,main()方法外也有new对象,运行时出错了
不太清楚调用构造方法的顺序;
这个代码里,是不是先运行main里的Test22 t2 =new Test22();然后调用父类里的无参构造方法,接着发现main方法外面有
一个Test22 t1=new Test22();就继续调用父类里的无参构造方法的构造方法...就是先调用父类所有的构造方法在返回main方法.....
还是这里是main里面的Test22 t2 =new Test22();和main外面的Test22 t1=new Test22();发生冲突造成死循环了??
好似是java.lang.StackOverflowError 栈溢??

class Test11 {
  public Test11()
  {
 
  }

}


public class Test22 extends Test11
{
public Test22()
  {
 
  }

Test22 t1 = new Test22();
  public static void main(String[] args)
  {
  Test22 t2 =new Test22();
  }
}

------解决方案--------------------
外面这个Test22 t1 = new Test22();有问题,去掉吧。
------解决方案--------------------
的确 那个实例代码去掉 一个类里面除了属性 就是方法 没别的代码
------解决方案--------------------
和main里面的那个完全没有关系,是外面的那个造成了死循环

每次构造一个新的Test22对象都会嵌套构造一个新的肯定会内存溢出

main是静态方法,其中的东西在装载类时装载,只装载,不运行,和他没关系
------解决方案--------------------
加载一个类的时候要初始化变量,就是不断的new Test22,导致栈内存一处