2014-10-29 127 views
-1

我有一個超類叫做Employee和我共進晚餐類稱爲Full_TimePart_Time 並調用Company另一個類與Employee類我想創建顯示這僅僅是全部時間的方法的組合關係。然而 數據,所以我寫的代碼: -簡單的繼承

public void display_All_Full(){ 
    for (int i = 0;i<n_b_E;i++){ 
     if (a_r_Employee[i] instance_of Full_Time){ 
      ->a_r_Employee[i].display_Full(); 
     } 
    } 
} 

,然後它說錯誤的行號3: 方法display_Full()是未定義的類型Employee

但我已經寫在Full_Time類中的方法是從超類Employee

回答

7

我懷疑你需要在執行方法之前,員工轉換爲全時員工的一個子類:

((Full_Time)a_r_Employee[i]).display_Full(); 

它這樣做是安全的,因爲您已經確認該僱員的類型爲Full_Time

或者,您可以使Employee超級類爲抽象類,然後在中定義抽象方法: 例如

public abstract void display(); 

然後,這難道不需要的演員,但你需要實現的方法,員工

+0

非常感謝你,這是快速和有益的 – 2014-10-29 17:57:07

0

理想情況下的每個子類中,你應該儘量利用你的對象層次。您可以在您的Employee基類中定義一個名爲display()的抽象方法。在每個子類中,不是編寫方法display_Full()或display_Part(),而是覆蓋display(),以便爲子類所代表的員工類型執行相應的實現。

然後在你的循環,你會簡單地做:

if (a_r_Employee[i] instance_of Full_Time){ 
    ->a_r_Employee[i].display(); 
} 

沒有必要的鑄造。

更新:我沒有注意到,以前的答案也建議抽象的display()方法。