父类重载了子类的构造方法,并且父类无空参构造方法,子类继承后,报错原因分析
1.子类会有默认的空参构造方法(默认隐藏),默认构造方法第一行(这是隐藏的)有一个super关键字,spuer(),调用父类的空参构造方法。
2.父类不存在空参构造,所以报错。
3.如果父类有多个构造方法,子类调用一个即可。
4.构造方法不能被继承,所以不能被重写。
package cn.huhui.demo03;
public class Person {
int a;
public Person(int a) {
this.a=a;
}
}
package cn.huhui.demo03;
/*
* 子类方法报错原因:找不到父类的空参构造
* 父类重载了构造方法
* 子类中,没有手写构造,编译器默认添加无参的空参构造
* public Student(){
* super();
* }
*编译成功,必需手动编写的构造方法.
*注意:子类中的所有构造方法,无论重载多少个,第一行必需是super()
*
*如果有多个构造方法,子类任意调用一个即可
*构造方法不能继承,当然没有重写
* */
public class Student extends Person {
public Student() {
super(8);
}
public Student(String s) {
super(8);
}
}
package cn.huhui.demo03;
public class Test {
}