Re: [問題] 還是不太懂多型

看板java作者 (沉默是金)時間15年前 (2008/10/26 13:04), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《s66449 (閒泡菜)》之銘言: : 推 qrtt1:不太懂,又用不到就先跳過吧。 10/25 21:42 : 推 yyc1217:假設你現在要寫一個動物園 你有Animal類別跟許多繼承於 10/25 22:38 : → yyc1217:Animal的其他動物類別(假設有Dog及Cat) 10/25 22:40 : → yyc1217:現在你不知道程式傳進來的是dog還是cat 10/25 22:42 : 推 liyard:看到中文命名我頭好痛orz 10/25 22:45 : 推 yyc1217:所以你會宣告一個Animal參數 用來指向任一個傳進來的物件 10/25 22:45 : → yyc1217:但你不能宣告cat或dog參數 因為他們彼此不能通過"IS-A" 10/25 22:47 : 推 yyc1217:這就是多型的好處 用來處理不知道會傳進什麼物件的情況下 10/25 22:49 : → yyc1217:但你知道傳進來的都是"Animal" 就可以這樣寫 10/25 22:51 : 推 qrtt1:以父類別宣告然後以子類別的建構子new <-- 請搜尋 10/25 23:50 : 推 TsaiCF:多年前我是看侯俊傑老師的多型與虛擬開始對oop有入門感覺的 10/26 01:51 : 推 TsaiCF:(雖然那本是c++).另外要看應用面,可以找design pattern來看 10/26 01:54 : → s66449:yyc1217~請問程式是自己寫的,為什麼會不知道傳入的是dog 10/26 09:59 : → s66449:還是cat? 10/26 10:01 舉個例子 , 如果你要比較 Dog跟Cat Tiger 這三個繼承Animal的成員 要比較 Dog 跟 Cat 那你就要寫 public void compare(Dog d, Cat c); 如果你要比較 Cat跟 Tiger 那你就要寫 public void compare(Tiger t, Cat c); 有多少動物你就要按照組合寫多少次 那還不如底下一次來得省事 public void compare(Animal a,Animal b); : 推 kasase:假設你的function是比較兩隻傳入動物的年紀 10/26 12:26 -- What do you want to have ? / What do you have? 從書本中,你可以發現我的各種興趣。 從CD中,你可以瞭解我所喜歡的偶像明星。 或許從文字你很難以瞭解一個人,但從物品可以。 My PPolis , My past. http://ppolis.tw/user/Tony -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.78.140

10/26 13:05, , 1F
當然多型的用途不只如此.:p
10/26 13:05, 1F

02/29 14:17, , 2F
很清楚的例子!
02/29 14:17, 2F
文章代碼(AID): #190_faR5 (java)
文章代碼(AID): #190_faR5 (java)