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的话,则默认调用父类的无参构造。
------解决方案--------------------
子类构造方法中,如果没有显示调用父类的构造方法,则调用父类无参的构造方法,这个无参的构造方法可能是默认的,也可能是自己定义的。