/*
子类的所有的构造函数,默认都会访问父类中空参数的构造函数
因为子类每一个构造函函数内的第一行都有一句隐式的super
super语句一定是在子类构造函数的第一行
* */
class Game{
Game(){
System.out.println("Game constructor");
}
Game(int i){
System.out.println("Game constructor"+i);
}
}
class BoardGame extends Game{
BoardGame(){
//super(); //不写也会默认有
System.out.println("BoardGame constructor");
}
BoardGame(int i){
//super(); //不写也会默认有
System.out.println("BoardGame constructor"+i);
}
}
public class Chess extends BoardGame {
Chess(){
//super(); //不写也会默认有
System.out.println("Chess constructor");
}
Chess(int i){
super(i); //这里不会含有默认的super(),因为已经显式的调用了super(i)
System.out.println("Chess constructor"+i);
}
public static void main(String[] args) {
Chess x=new Chess();
Chess y=new Chess(5);
}
}
结果: