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了,想问问为什么

解决方案 »

  1.   

    在bird类默认实例化时是调用animal无参的构造方法。如果在父类animal中声明了有参的构造方法,它就不存在无参的构造方法了,所以抛出异常。
      

  2.   

    最好在子类的构造方法的第一行加super(),括号中要有父类构造方法的参数。养成这个习惯可以避免一些麻烦
      

  3.   

    animal(int id)之前加上void
      

  4.   

    原因楼上几位都已经说明了,修改如下:
    方法一,给animal提供无参的构造函数animal(){}方法二,在bird类的构造函数中使用super关键字调用animal的构造函数bird()
    {
      super(10);//给一个int的数值
    }
      

  5.   

    首先,构造方法并不能被子类继承。只是在子类实例化的时候先加载父类的不带参数构造函数。
    当需要加载父类带参数的构造函数时,需要用super()关键字显示调用