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; }//这里有什么错误阿?  
 }
 public class wren4255 { 
  public static void main(String[] args) {
 Employee e = new Employee("4321");
 System.out.println(e.empID);
 }
 }

解决方案 »

  1.   

    答:父类Person 中你要定义一个默认构造器。
    这是因为:
    public Employee(String id) { empID = id; }
    编译时就是
    public Employee(String id) 

    super();//这是编译程序自动加上的。而你Person中又没有定义无参的构造器。所以出错了。因此:你自己或者明确调用:super("...");
    empID = id; 
    }
      

  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; 
      }
     }
     public class wren4255 { 
         public static void main(String[] args) {
     Employee e = new Employee("4321");
     System.out.println(e.empID);
     }
     }
      

  3.   


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

  4.   


    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;   }//这里有什么错误阿?public Employee(String id) { super(id);empID = id; 
     }
     public class wren4255 { 
         public static void main(String[] args) {
     Employee e = new Employee("4321");
     System.out.println(e.empID);
     }
     }在构造子类时,一定会调用到父类的构造方法。 
    所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。