1、继承关系说明:
public class Man extends Person {
private String whp;
public Man() { **//这里报错**
// TODO Auto-generated constructor stub
System.out.println("Man 构造器");
}
public Man(String whp) {
super(); **//这里也报错**
this.whp = whp;
}
}
public abstract class Person {
private String name;
private int age;
// public Person() {
// // TODO Auto-generated constructor stub
// System.out.println("Person 构造器");
// }
public Person (String name, int age) {
this.name = name;
this.age = age;
}
public void show(){
System.out.println("name is:" + name);
}
private void personDo(){
System.out.println("person private function");
}
public abstract void myrun();
}
报错图片:
报错的原因是,在Person类中,缺少无参的构造方法(被注释掉了),所以在子类代码,第7行中,默认先调用父类的无参构造方法是报错,第14行使用super(),调用父类无参构造也报错。
解决方法:在父类中添加无参构造方法。
总结:
1、假如父类方法中,存在有参构造方法,子类中也使用了有参构造方法,那么父类中,一定要添加无参构造方法。
2、如果父类中,没有存在有参构造方法,那么默认存在无参构造,可以在子类中使用任意参数类型的构造方法。