2014-03-19 44 views
0

我通過以下兩本書學習java,如果有人能幫助我理解我已經看到並且無法理解的幾行代碼,我將不勝感激。請將此代碼寫入正確嗎?

可以說我有類:

  1. 員工(抽象類)
  2. 經理(員工子類)
  3. 服務器(員工子類)
  4. 餐廳

所以幾乎「餐廳」將需要「經理」和「服務器」。我看過用這種方式編寫的代碼,並想知道這是否有效。我也按照我學到的方式編寫了相同的代碼。請查看底部的代碼。

public Class Restaurant{ 

    private Employee Manager; //I DON'T UNDERSTAND THIS 
    private Employee Server; //I DON'T UNDERSTAND THIS 


    public Restaurant(){ 

     //I DON"T UNDERSTAND THIS 
     Manager = new Manager(); 
     Server = new Server(); 
    } 
} 

這是我已經學會代碼:

public Class Restaurant{ 

    private Manager _mgr; 
    private Server _server; 


    public Restaurant(){ 

     _mgr = new Manager(); 
     _server = new Server(); 
    } 
} 
+1

你是問什麼的命名約定是實例變量? –

+1

您可能想在http://codereview.stackexchange.com上提問。 – devnull

+2

還是你問關於多態性和繼承? –

回答

2

我猜,你的管理器和服務器類都在類,如下面定義的,

class Manager extends Employee { 

} 

class Server extends Employee { 

} 

在這種情況下,類經理是一種經理和員工,並且與服務器一樣。它是OOP的繼承和多態。閱讀關於herehere。你的第二個代碼和第一個代碼都是正確的。我們使用它的方式取決於。

+0

謝謝@JJPA,非常感謝你的幫助。 – Combustion007

0

我可以理解你在第一個例子中實際看到的實際名爲Manager(它是子類的文字名)的Employee類型的對象。

所以要回答你的問題(儘管我注意到你的問題中明顯缺少問題和/或問號),是的,它是有效的。由於經理是員工,服務器是員工,因此他們只有兩個員工對象,他們的名字明確了他們應該是什麼。

它實際上是語法正確在例如說

Manager = new Server(); 

但是這顯然是直覺的變量名。

0
public Class Restaurant{ 

    private Employee Manager; // 
    private Employee Server; // 


    public Restaurant(){ 

     //I DON"T UNDERSTAND THIS 
     Manager = new Manager(); 
     Server = new Server(); 
    } 
} 

class Manager extends Employee{ 

} 

class Server extends Employee{ 
} 

現在,由於員工是超一流的管理和服務,我們可以說,「每一位員工都是管理者,每一個服務器是一個管理器」。

Employee e = new Manager(); // is like "Pointing to a manager and saying that he is an employee. Which is correct. 

實際的對象是在運行時確定的。 請記住,並非所有「Service/manager」類的方法/屬性都可以使用Employee參考進行訪問。

0

通過回答詳細討論了代碼的結構。但代碼詳細說明的一件事是part does not exist without whole,它被稱爲組合。與強關聯關係是has a。其他是聚合在其中part can exist without whole

組成

public Class Restaurant{ 

    private Employee Manager; // 
    private Employee Server; // 


    public Restaurant(){ 

     //I DON"T UNDERSTAND THIS 
     Manager = new Manager(); 
     Server = new Server(); 
    } 
} 

聚集

public Class Restaurant{ 

    private Employee Manager; // 
    private Employee Server; // 


    public Restaurant(){ 
    } 

    public setManager(){ 

     Manager = new Manager(); 
    } 
    public setServer(){ 

    Server = new Server(); 
    } 

}