调用子类对象的方法时StackOverflowError?

时间:2017-10-02 19:34:56

标签: java object inheritance stack-overflow

执行Test类会产生StackOverFlow错误:(

家长班:

package Pack;

public class Alpha {
  protected void sayHi() {
    System.out.println("Hi...from Alpha");
  }
}

儿童班:

import Pack.Alpha;

public class AlphaSub extends Alpha {
  AlphaSub sb=new AlphaSub() ;

  void hi() {
    sb.sayHi() ;

  }
}

测试类:

public class test {
public static void main(String[] args) {

    AlphaSub ob=new AlphaSub() ;
    ob.hi() ;
}

}

1 个答案:

答案 0 :(得分:2)

您的stackoverflow与继承无关,但是使用此行(在AlphaSub内):

AlphaSub sb=new AlphaSub() ;

您正在AlphaSub内创建一个新的AlphaSub实例,这会导致一个endleess循环。我假设您甚至没有进入测试中的ob.hi()