我无法弄清楚如何编译我的子类,即使它调用了超类构造函数?
这是无法编译的类:
package departments;
import employees.*;
public class DepartmentEmployee extends Employee{
private Department department;
public DepartmentEmployee(Profile profile, Address address, Occupation occupation, Department department) {
assert (department != null) : "invalid Department";
super(profile, address, occupation);
this.department = department;
}
}
这是超类:
package employees;
public class Employee {
protected Profile profile;
protected Address address;
protected Occupation occupation;
protected Employee(Profile profile, Address address, Occupation occupation) {
assert (profile != null) : "invalid Profile";
assert (address != null) : "invalid Address";
assert (occupation != null) : "invalid Occupation";
this.profile = profile;
this.address = address;
this.occupation = occupation;
}
}
子类继续说“找不到符号 - 构造函数Employee”。这两个是不同的包。我是否正确链接了它们?
答案 0 :(得分:6)
super()
必须是构造函数中的第一个调用。将其重新排列在assert
上方。
调用超类构造函数必须是子类构造函数中的第一行。