2013-10-02 42 views
0

的父類是...多級繼承默認構造

public class UMember { 
    private String first; 
    private String last; 
    private String street; 
    private String city; 
    private String state; 
    private String zipcode; 

    public UMember() { 
     this("na", "na", "na", "na", "na", "na"); 
    } 

    public UMember(String first, String last, String street, 
      String city, String state, String zipcode){ 
     set(first, last, street, city, state, zipcode); 
    } 

    private void set(String first, String last, String street, 
      String city, String state, String zipcode){ 
     this.first = first; 
     this.last = last; 
     this.street = street; 
     this.city = city; 
     this.state = state; 
     this.zipcode = zipcode; 
    } 

    public void setUMember(String first, String last, String street, 
      String city, String state, String zipcode) { 
     set(first, last, street, city, state, zipcode); 
    } 

UMember的父子類是...

public class Employee extends UMember { 
    private int eid; 
    private String doh; 
    private String dept; 
    private double salary; 

    public Employee() { 
     this(0, "na", "na", 0.0, "na", "na", "na", "na", "na", "na"); 
    } 

    public Employee(int eid, String doh, String dept, double salary) { 
     this(eid, doh, dept, salary, "na", "na", "na", "na", "na", "na"); 
    } 



    public Employee(int eid, String doh, String dept, double salary, 
      String first, String last, String street, String city, 
      String state, String zipcode) { 
     super(first, last, street, city, state, zipcode); 
     set(eid, doh, dept, salary); 
    } 

    private void set(int eid, String doh, String dept, double salary) { 
     this.setEid(eid); 
     this.setDoh(doh); 
     this.setDept(dept); 
     this.setSalary(salary); 
    } 

    private void setEmployee(int eid, String doh, String dept, double salary, 
      String first, String last, String street, String city, 
      String state, String zipcode) { 
     setUMember(first, last, street, city, state, zipcode); 
     set(eid, doh, dept, salary); 
    } 

員工的子類是...

public class Faculty extends Employee{ 
    private String rank; 
    private int annualTeachingLoad; 

    public Faculty() { 
     this("na", 0, 0, "na", "na", 0.0, 
       "na", "na", "na", "na", "na", "na"); 
    } 

    public Faculty(String rank, int annualTeachingLoad) { 
     this(rank, annualTeachingLoad, 0, "na", "na", 0.0, 
       "na", "na", "na", "na", "na", "na"); 
    } 

Faculty子類中的上述默認構造函數都不正確。我無法弄清楚爲什麼。我首先使用默認值爲Faculty,然後僱員,最後UMember。任何幫助,爲什麼這兩個代碼段是不正確的,將不勝感激。

+0

'super(...)'必須被稱爲第一件事。 –

+0

@SotiriosDelimanolis - 你在哪裏看到OP違反這條規則? –

+0

你的意思是'代碼不正確?' –

回答

2

您打電話給構造函數this而不是super。調用構造函數this將只能調用在同一類中聲明的構造函數,而super用於調用超類中的構造函數。

+0

因此,我的Employee類中的代碼使用Employee和UMember的所有默認值調用默認構造函數。這是我想再次寫的,但是在學院課上。 –

+0

如果你想調用一個在超類中聲明的構造函數而不是'this',你需要用'super'調用它,而不是'this'。 – tbodt