原则:当父类仅有带有参数的构造方法时,子类的构造方法中必须使用super(参数)
super()表示父类的构造方法,子类默认调用父类无参构造方法。
一旦父类仅定义了带参数的构造方法,表示创建父类必须使用带参数构造方法,不接受new父类时不带参数,那么此时子类里默认的调用super()就会报错,不带参数的父类构造方法不存在,必须手动加上含有参数的构造方法。
public class practice {
public static void main(String[] args) {
Sun s =new Sun();
s.show();
}
}
class Dad{
public int age;
Dad(int age)
{
this.age = age;
}
void show(){
System.out.println(age);
}
}
class Sun extends Dad{
public int age=10;
public Sun()
{
super(35);
}
}
如果去掉super将会提示错误信息There is no default constructor available in 'basic.Dad'