2014-03-13 97 views
0

如果標題不正確,請原諒我,我認爲這個問題與「多態性」有關,但不想讓標題複雜化。在另一個類的構造函數中傳遞一個類類型?

我正在學習Java並遵循「Java:Learn to Program」,隨着我的進展,我正在應用這些知識並創建自己的場景以查看 如何應用「多態性」。如果有人能幫助我理解如何完成這項任務,我將不勝感激。我有三類:

  1. 摘要員工
  2. 經理(員工的子類)
  3. 餐廳

Employee類和管理類是非常直接的。我正在嘗試創建一家餐廳,每家餐廳都有一名經理。我的問題是:

我應該將「Manager」類型作爲「Restaurant」類的構造函數參數傳入,還是在構造函數中實例化「Manager」對象?

public abstract class Employee{ 

    private String _empName; 
    private double _empSalary; 

    public Employee(string name, double salary){ 

     _empName = name; 
     _empSalary = salary; 
    } 

    public void setEmpName(String name){ 
     _empName = name; 
    } 

    public String getEmpName(){ 
     return _empName; 
    } 

    public void setEmpSalary(double salary){ 
     _empSalary = salary; 
    } 

    public double getEmpSalary(){ 
     return _empSalary; 
    } 
}//CLASS 


public class Manager{ 

    private double _yrsOfExp; 

    public Manager(String name, double salary, double experience){ 
     super(name, salary); 
     _yrsOfExp = experience; 
    } 

    public void setManagerExperience(double years){ 
     _yrsOfExp = years; 
    } 

    public double getManagerExperience(){ 
     return _yrsOfExp; 
    } 

}//CLASS 

這是我需要幫助的地方,我用「MANAGER TYPE」聲明瞭構造函數。我應該用施工而不是 向施工人員傳遞「管理員類型」來聲明「施工人員」的實例嗎?

public class Restaurant{ 

    private Manager _manager; 
    private String _location; 

    //CONSTRUCTOR 1 
    //SHOULD I PURSUE IT THIS WAY OR 
    public Restaurant(Manager manager, String location){ 
     _manager = manager; 
     _location = location; 
    } 

    //CONSTRUCTOR 2 
    //SHOULD I DO IT THIS WAY? 
    public Restaurant(String name, double salary, double experience, String location){ 
     super(name, salary, experience); 
     _location = location; 
    } 

    public String toString(){ 
     String str = ""; 

     return str; 
    } 
}//CLASS 

回答

1

這在一定程度上是品味的問題,以及您將如何處理物體。

如果您可能想要單獨提及經理,那麼他們希望成爲他們自己的對象而不是餐廳的屬性。由於一個餐廳本身並不是經理,所以我建議它不應該在其構造函數中使用經理的屬性,而應該爲其分配一個經理(無論是在構造函數還是在setManager()調用中)。

除此之外,如果一位經理負責兩家餐廳,那麼這將更有意義。

+0

想想這樣,你的餐廳有經理或你的餐廳有名字,工資和經驗嗎? –

+0

謝謝@keshlam。我傾向於我的第二個構造函數,並且我收集你的方法是第二個構造函數? – Combustion007

+0

我建議根據您提供給我們的最小數據作爲第一選項。將經理視爲一個對象,而不是餐廳的屬性。 – keshlam

相關問題