![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - [程式設計問題???] 不同的SubObject該如何自動正確轉換?Mutil-Thread怎麼用
(https://www.pcdvd.com.tw/showthread.php?t=1065147)
|
---|
引用:
不知道有沒有理解錯問題? 如果在產生SubObject時就依照條件產生不同的SubObject,如: Object detials = (Object) Result.info; Object inst = null; if (detials.mType.equals("GGININ")&& detials.mSubType.equals("Der")) { inst = new SubObject(); } else if(detials.mType.equals("B")&& detials.mSubType.equals("B")) { inst = new SubObject1(); } else if(detials.mType.equals("C")&& detials.mSubType.equals("C")) { inst = new SubObject2(); } ..... 然後直接呼叫getCurrentValue(), 因為多型就會直接呼叫到對應的SubObject的getCurrentValue() |
引用:
是的 我目前是這樣理解 這樣寫的 原來這叫做多型阿 謝謝 |
引用:
LR2001 高人已點出答案, 你參考一下, 我現在是邊啃code邊偷瞄pcdvd回覆, 實在沒時間看你的 抱歉了.... |
引用:
OOP = object-oriented programming, 物件導向程式。 既然都用 Java 了,應該花一點時間研究 OOP, 這是 C#, Java 這類語言的精髓。一般 Java/C# 的書,應該都會寫到。 OOP 三大絕:封裝、繼承、多型。其實觀念清楚了,這些都是易如反掌的事。 Java 多型範例: http://pydoing.blogspot.tw/2010/11/...lymorphism.html |
樓主的 code 是 java, 對吧
我看到一些關鍵字 我想你是要寫 android app , 對吧 java 很神奇的 從以前寫 C/C++ 的經驗 , 總之 java 是一個神奇的東西 不能隨便轉型, 不像以前用 C/C++, 一個 point 搞定 我對 java 也不熟 不可把 C/C++ 的經驗 套用在 java , 尤其是轉型 ... |
看起來單純是個多型的問題
我想只要在base class先定義好abstract method 再到derived class去寫出相對應的方法 在使用的時候只要呼叫bass class的method即可 例如定義一個class character 在裡面 有一個abstract attack metohd 然後有warrior 跟 wizard extend character 然後再去分別實作 attack方法 最後 character player01 = new warrior; character player02 = new wizard; player01.attack(),player02.attack() 就會做出warrior 跟wizard的attack |
你的問題寫成這樣子會比較好吧?
代碼:
public class MyInfo { private String info = "myInfo"; private MySubObj[] subObjs = new MySubObj[5]; public MyInfo() { subObjs[0] = new MySubObj2(); subObjs[1] = new MySubObj2(); subObjs[2] = new MySubObj1(); subObjs[3] = new MySubObj2(); subObjs[4] = new MySubObj1(); } public String getInfo() { return info; } public String getSubInfo() { String result = ""; for(MySubObj so : subObjs) { result += so.getSubValue(); } return result; } } public abstract class MySubObj { private String value = "mySubObj"; public String getValue() { return value; } public abstract String getSubValue(); } public class MySubObj1 extends MySubObj { private String subValue1 = "mySubObj1"; public String getSubValue() { return subValue1; } } public class MySubObj2 extends MySubObj { private String subValue2 = "mySubObj2"; public String getSubValue() { return subValue2; } } |
引用:
我早期剛學程式的時候是用類似這做法, 後來則改用 interface , 然後用 reflect 去抓 instance 的 class type(因為以前一些東西,需要用到一些動態 load/create instance 機制), 沒有誰優誰差, 這是個人比較偏好的寫法, 盡量少用 一堆繼承, 個人經驗供參考. |
所有的時間均為GMT +8。 現在的時間是07:49 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。