子类继承父类构造方法的问题
class animal{
public int id;
animal(int id){
this.id=id;
}
}
class bird extends animal{
}
public class dog{
public static void main (String[] args) {
}
}
编译通过不了,提示找不到符号,构造方法注释掉就OK了,想问问为什么
------解决方案--------------------在bird类默认实例化时是调用animal无参的构造方法。如果在父类animal中声明了有参的构造方法,它就不存在无参的构造方法了,所以抛出异常。
------解决方案--------------------同上,楼上正解
------解决方案--------------------在子类建立对象的时候,要调用父类的构造方法,
如果子类的构造函数是无参的,就要调用父类的无参数的构造函数,
因为你提供了父类的构造函数,并且是有参数的,所以父类就没有无参数的构造函数,
这时候子类又不提供参数,编译时通过不了的
------解决方案--------------------最好在子类的构造方法的第一行加super(),括号中要有父类构造方法的参数。养成这个习惯可以避免一些麻烦