我是Java新手,所以這將是一個新手問題,它是這裏:Java中的類
我有一個類的飛機。但我必須有不同的飛機(如PassengerPlane或CargoPlane) 然後我必須在另一個班級(例如機場)使用這架飛機作爲飛機。
我的意思是,如何在同一級別的飛機上擁有不同的屬性(貨運飛機具有最大容量,例如乘客飛機擁有最多乘客)?
在此先感謝。
我是Java新手,所以這將是一個新手問題,它是這裏:Java中的類
我有一個類的飛機。但我必須有不同的飛機(如PassengerPlane或CargoPlane) 然後我必須在另一個班級(例如機場)使用這架飛機作爲飛機。
我的意思是,如何在同一級別的飛機上擁有不同的屬性(貨運飛機具有最大容量,例如乘客飛機擁有最多乘客)?
在此先感謝。
基本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
}
非常感謝。這是我正在尋找的。我怎樣才能從Airport類訪問PassengerPlane的特定屬性?例如,我想查看PassengerPlane1從機場的燃油水平?我已經嘗試過,但它只顯示飛機班的方法(因爲機場有飛機列表)。有沒有辦法訪問PassengerPlane方法? – EvanBlack 2011-03-09 23:31:44
這取決於體系結構。在一個非常簡單的層面上,您可以通過列表中的飛機進行迭代,並檢查'if(飛機instanceof PassengerPlane)'並將飛機實例投射到PassengerPlane PassengetPlane pp =(PassengerPlane)飛機;並訪問PassengerPlane特定屬性pp.maxPassengers '。 – 2011-03-10 00:10:44
這很棒!謝謝。 – EvanBlack 2011-03-10 00:19:58
Class飛機應該只有所有飛機共享的屬性。比如像fuelLevel等
正如其他人所說的,特殊屬性進入的子類:
class Airplane {
int fuelLevel;
}
class CargoPlane extends Airplane {
int maxCapacity;
}
class PassengerPlane extends Airplane {
int maxPassengers;
}
添加行爲的一個或多個接口如何? – 2011-03-10 07:23:09
爲了學習語法玩弄簡單的繼承 - 但要知道盲目擴展類不考慮(如在這裏的一些答案)不是最佳實踐。我希望鏈接能正常工作,但請閱讀以下內容: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
還推薦使用Java作爲示例的首選設計模式。 – 2011-03-09 23:17:45