日期:2014-05-20  浏览次数:20664 次

子类继承父类构造方法的问题
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(),括号中要有父类构造方法的参数。养成这个习惯可以避免一些麻烦