当前位置: 代码迷 >> J2SE >> 关于构造顺序的一个小疑点
  详细解决方案

关于构造顺序的一个小疑点

热度:147   发布时间:2016-04-23 20:22:48.0
关于构造顺序的一个小问题!

public class Superserver {
public Superserver(){
System.out.println("all");
}

public Superserver(int y){

this();
System.out.println("good");
}
}
public class TestServer extends Superserver{


public TestServer(){
super(10);
System.out.println("come");
}

public TestServer(int y){

System.out.println("things");

}
public static void main(String[] args) {
TestServer ts = new TestServer(10);
}
}




请问为什么不会打印出good呢? 难道顺序不是Superserver-->supersever(int i)-->TestServer(int i)?
实在想不通
------解决方案--------------------
无显示调用时,子类默认调用父类无参的构造方法
楼主可以在TestServer(int y)  手动super(y) 调用父类有参的构造方法
------解决方案--------------------
这不是和简单吗?

如果改成这样,则肯定会打印了。
TestServer ts = new TestServer();


如果没有显式调用this或者super的话,则默认调用父类的无参构造。
------解决方案--------------------
子类构造方法中,如果没有显示调用父类的构造方法,则调用父类无参的构造方法,这个无参的构造方法可能是默认的,也可能是自己定义的。
  相关解决方案