不继承,但调用
- 子类是不会继承父类的构造方法的,但是会隐式( super(); )或者显式地调用父类构造方法,其中显式调用需要 super 关键字实现。
//父类
public class SuperClass {
int id;
String name;
public SuperClass() {
System.out.println("父类无参构造!");
}
public SuperClass(int id, String name) {
System.out.println("父类有参构造");
this.id = id;
this.name = name;
}
}
//子类
public class SubClass extends SuperClass {
public SubClass() {
//super(); //注释掉该语句,则为隐式调用;若不注释则为显式调用
}
}
//测试类
public class Test{
public static void main(String[] args){
SubClass a = new SubClass(); //无参构造一个子类
}
}
运行结果:
父类无参构造!
需要注意的是,子类的构造方法中用 super 调用父类构造方法的语句必须要在第一行,如果不是,则会报错。
此外,如果父类中没有无参构造方法,则必须使用 super(参数) 显示地调用父类有参构造方法
public class SubClass extends SuperClass {
public SubClass() {
super(1, "Ayaka"); //显式地调用父类有参构造。该语句不可注释掉
}
}
输出结果:
父类有参构造!