package basic;
/*
* 1.子类构造的过程中必须调用其父类的构造方法
* 2.子类可以在自己的构造方法中使用super(argument_list)调用父类的构造方法
* 2.1使用this(argument_list)调用本类的另外的构造方法
* 2.2如果调用super,必须写在子类构造方法的第一行
* 3.如果子类的构造方法中无显示的调用父类的构造方法 系统默认调用父类无参数的构造方法
* 4.如果在3的条件下,父类又没有无参数的构造方法则出错
* */
public class ConstructInExtends {
public static void main(String[] args) {
SubClass sc1 = new SubClass(); //1
SubClass sc2 = new SubClass(400); //2
System.out.println(sc1.n);
System.out.println(sc2.n);
}
}
class SuperClass {
int n;
SuperClass() {
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}
class SubClass extends SuperClass {
int n;
SubClass(int n) {//construct 2
//super(); //系统默认调用父类无参数的构造方法 写不写没关系
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {//construct 1
super(300);//子类在构造自己的时候,必须先把它爸爸 构造出来
//super 必须写在子类构造方法的第一行
//如果这里不写 则系统默认调用父类无参数的构造方法,如父类又没有无参数的构造方法则出错
System.out.println("SubClass()");
}
}