這是一個非常基本的java問題。Java多態性利用率
我有一個超類。
public class MenuItem {
private int itemId;
public int getItemId() {
return itemId;
}
public void setItemId(int itemId) {
this.itemId = itemId;
}
}
然後子類:
public class Beverage extends MenuItem {
private PriceSML price;
public PriceSML getPrice() {
return price;
}
public void setPrice(PriceSML price) {
this.price = price;
}
}
public class Cake extends MenuItem {
private SugarLevel sugarLevel;
public SugarLevel getSugarLevel() {
return sugarLevel;
}
public void setSugarLevel(SugarLevel price) {
this.sugarLevel= sugarLevel;
}
}
然後我創建了一個DAO方法:
public boolean createItem(MenuItem menuItem) {
boolean result = false;
try {
Connection conn = createConnection();
Statement stmt = conn.createStatement();
String query = "INSERT INTO menu (menu_id, price)
+ "VALUES ('"
+ MenuItem.getItemCode()
+ "')";
//NOTE: HOW TO GET THE PRICE AND PUT IT IN MY QUERY
stmt.executeUpdate(query);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
但我怎麼能得到PriceSML價格,因爲它是在飲料?即使我通過它像這樣
MenuItem menuItem = new Beverage();
所以我決定這樣做:
public boolean createBeverageItem(Beverage beverage) {
}
public boolean createCakeItem(Cake Cake) {
}
等等...(例如100多個方法,如果我有100個類別)。請注意,我只訪問數據庫中的菜單表。那我該如何做得更好?
謝謝。
車輪:我們已經有了。 http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html :) – Affe
其他類的'SugarLevel'和'SMLPrice'子類是什麼?就像一些價格屬性一樣的價格類? – everton
請記住,在很多情況下,繼承是一種反模式。看到[這個問題](http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance) – olivieradam666