class Person
{
   String name = "no name";
   public Person(String nm){name = nm;}
}class Employee extends Person
{
   String empID = "0000";
   public Employee(String id) {  empID=id;  }
}class EmployeeTEST
{
  public static  void main(String [] args) 
     {
        Employee e = new Employee("4321");
        System.out.println(e.empID);                
     }
}

解决方案 »

  1.   

    EmployeeTEST.java:10: Person(java.lang.String) in Person cannot be applied to ()   public Employee(String id) {  empID=id;  }
                                  ^
    1 error
      

  2.   


    class Person
    {
       String name = "no name";
       public Person(String nm){name = nm;}
    }class Employee extends Person
    {
       String empID = "0000";
       public Employee(String id) {  super(id); empID=id;  } //一看就看出问题了,要么Person有默认构造器,要么像这样自己到调用Person的构造函数,否则没法构造父类对象,又怎么能构造字类对象?
    }class EmployeeTEST
    {
      public static  void main(String [] args) 
         {
            Employee e = new Employee("4321");
            System.out.println(e.empID);                
         }
    }
      

  3.   

    还有补充一下,class EmployeeTEST加上public,如果你想测试的话
      

  4.   

    啊 谁跟我一点 java 构造函数方面的知识,不懂呀。
      

  5.   

    1 任何类,在构造的时候,首先调用父类的构造器,如果不编码指定,比如super(id); 则默认调用 super(); 无参数的构造器
    2 如果类没有任何构造器,则会有一个无参数的构造器编译时被自动生成,如果有了其他的构造器,则不会自动生成了。所以你的
    class Person
    书写了一个String参数的构造器,就不能自动生成无参数的构造器了
    子类如果不指定 super(String)的构造器,则会因为找不到父类的构造器而报错!
      

  6.   

    那我是不是能这样理解 ,一个类如果是继承的另外一个类,他就不能有自己的构造方法了,只能调用或者重写他的父类构造方法。另外,我刚才搜索了一下 java中,为什么有人说是构造函数 有人说是构造方法 有人说是构造器 ,还有人说java中没有构造函数,只有构造方法,我都搞晕了,请问这个3个名词 指的是一样的东西吗?
      

  7.   

    class Person
    {
       String name = "no name";
       public Person()----------- 父類構造器改為空
    {}
    }class Employee extends Person
    {
       String empID = "0000";
       public Employee(String id) {  empID=id;  }
    }class EmployeeTEST
    {
      public static  void main(String [] args) 
         {
            Employee e = new Employee("4321");
            System.out.println(e.empID);                
         }
    }
    運行結果4321
      

  8.   

    一个类如果是继承的另外一个类,他就不能有自己的构造方法了,只能调用或者重写他的父类构造方法。如果你写了自己的构造器,一定要注意是否也写一个没有参数的构造器,比如
    class Person
    {
       String name = "no name";
       public Person(String nm){name = nm;}
       public Person(){} // 这样就可以了
    }至于那些名字,都是翻译的问题,叫构造器和构造方法的比较多
      

  9.   

    class Person {
    String name = "no name";
    String empID = "0000";
    public Person(String id) {
    this.empID = id;
    }
    }
    class Employee extends Person {
    public Employee(String id) {
    super(id);
    }
    }
    class EmployeeTEST {
    public static void main(String[] args) {
    Employee e = new Employee("1212");
    System.out.println(e.empID);
    }
    }
    這樣也行,直接在父類里面寫方法  子類調用就行了
    子類繼承父類是不能有自己的構造方法的
    像LS說的那樣 你 new  employee的時候他不是用的employee而使用person的構造器
      

  10.   

    那这样的话 public   Employee(String   id)   { super(id); }
    算不算 是对 public   Person(String   id)   { this.empID   =   id; } 的重写呢?
      

  11.   

    你可以這樣理解。。    怎么方便怎么記好了
    你new的時候  他調用了父類的構造器  但子類的構造器里一定要有父類的構造器的參數,你可以再加,但父類的參數一定要有,因為集成- -|、
    但是{}里面的方法可以不用,自己用自己的(覆蓋率父類構造器里的方法),不寫就用父類的
      

  12.   

    额 ,还是有点迷糊,构造器属于JAVA哪方面的内容? 我去找本书看看