Java继承 - 找不到符号构造函数

时间:2011-02-11 02:50:25

标签: java inheritance

我无法弄清楚如何编译我的子类,即使它调用了超类构造函数?

这是无法编译的类:

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”。这两个是不同的包。我是否正确链接了它们?

1 个答案:

答案 0 :(得分:6)

super()必须是构造函数中的第一个调用。将其重新排列在assert上方。

另见:

  

调用超类构造函数必须是子类构造函数中的第一行。