2011-03-09 30 views
1

我是Java新手,所以這將是一個新手問題,它是這裏:Java中的類

我有一個類的飛機。但我必須有不同的飛機(如PassengerPlane或CargoPlane) 然後我必須在另一個班級(例如機場)使用這架飛機作爲飛機。

我的意思是,如何在同一級別的飛機上擁有不同的屬性(貨運飛機具有最大容量,例如乘客飛機擁有最多乘客)?

在此先感謝。

+0

爲了學習語法玩弄簡單的繼承 - 但要知道盲目擴展類不考慮(如在這裏的一些答案)不是最佳實踐。我希望鏈接能正常工作,但請閱讀以下內容:http://books.google.co.uk/books?id=ka2VUBqHiWkC&pg=PA81&lpg=PA81&dq=favour+composition+over+inheritance&source=bl&ots=yXLoPfp1OY&sig=J6WkbHV-iDAp9HzhewbSD_ig2gc&hl= en&ei = pQl4Tb2IA42DhQf548D9Bg&sa = X&oi = book_result&ct = result&resnum = 5&ved = 0CDYQ6AEwBDgU#v = onepage&q&f = false - 支持合成而非繼承。 – 2011-03-09 23:15:52

+0

還推薦使用Java作爲示例的首選設計模式。 – 2011-03-09 23:17:45

回答

5

基本Airplane類可能是抽象的,甚至是一個接口。

class Airplane{ 
//common attributes 
} 

class PassengerPlane extends Airplane{ 
//passenger plane specific attributes 
} 

class CargoPlane extends Airplane{ 
//cargo plane specific attributes 
} 

class Airport 
{ 
List<Airplane> airplanes; 
// do stuff with planes 

} 
+0

非常感謝。這是我正在尋找的。我怎樣才能從Airport類訪問PassengerPlane的特定屬性?例如,我想查看PassengerPlane1從機場的燃油水平?我已經嘗試過,但它只顯示飛機班的方法(因爲機場有飛機列表)。有沒有辦法訪問PassengerPlane方法? – EvanBlack 2011-03-09 23:31:44

+0

這取決於體系結構。在一個非常簡單的層面上,您可以通過列表中的飛機進行迭代,並檢查'​​if(飛機instanceof PassengerPlane)'並將飛機實例投射到PassengerPlane PassengetPlane pp =(PassengerPlane)飛機;並訪問PassengerPlane特定屬性pp.maxPassengers '。 – 2011-03-10 00:10:44

+0

這很棒!謝謝。 – EvanBlack 2011-03-10 00:19:58

1

Class飛機應該只有所有飛機共享的屬性。比如像fuelLevel等

正如其他人所說的,特殊屬性進入的子類:

class Airplane { 
    int fuelLevel; 
} 

class CargoPlane extends Airplane { 
    int maxCapacity; 
} 

class PassengerPlane extends Airplane { 
    int maxPassengers; 
} 
+0

添加行爲的一個或多個接口如何? – 2011-03-10 07:23:09