Java中类继承的构造器问题
规范
在写类的构造方法时,写了有参数的构造方法,同时需要写无参数的构造方法,这是为了便于以后的继续开发。
原因
1.一个类写了有参数的构造方法,如果没有明确写出无参数的构造方法,则此时认为是没有无参数的构造方法的;
2.新创建一个类继承原有的类,新创建的类构造方法一定会去调用父类的构造方法,会默认调用父类的无参数构造方法,如果父类没有无参数构造方法,则会报错,此时需要显示的写super()去调用父类的有参数构造方法。
此处父类写了有参数的构造方法,没有写无参数的构造方法,子类的构造方法会自动调用父类的无参数构造方法,但是父类没有无参数构造方法,编译直接报错
class Dog extends Animal{
public Dog() {
System.out.println("这是dog的无参数构造方法");
}
}
class Animal {
public Animal(int b) {
System.out.println("这是animal的有参数构造方法");
}
}
子类调用父类的无参数构造方法失败,需要手动添加调用父类的有参数构造方法,改成如下,就没有问题
class Dog extends Animal{
public Dog() {
super(1);
System.out.println("这是dog的无参数构造方法");
}
}
class Animal {
public Animal(int b) {
System.out.println("这是animal的有参数构造方法");
}
}