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);
}
}
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);
}
}
这是因为:
public Employee(String id) { empID = id; }
在编译时就是:
public Employee(String id)
{
super();//这是编译程序自动加上的。而你Person中又没有定义无参的构造器。所以出错了。因此:你自己或者明确调用:super("...");
empID = id;
}
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);
}
}
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);
}
}
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()的方式调用父类的构造。