java 板


LINE

物件導向 OOP Object-Oriented Programming OOA Object-Oriented Analysis 從以前就從網路上得知有四大觀念 但沒真正搞懂這兩個東西 abstraction polymorphism 網路上的說法也不太一致 最近又再重看了一次 我這次的想法是這樣 abstraction 幾乎是所有 OOP 的核心思想 用簡單的東西表達複雜的東西 只需要知道如何操作各種東西 不需要知道那個東西到底是怎麼被做出來的 只是 OOP 著重於用 object 來做到 abstraction 而 functional programming 著重於用 function 來做到 也因次 OOP 衍生出其他三大觀念 encapsulation inheritance polymorphism 其中 polymorphism 在網路上也是有很多解釋 我覺得只要是能用一個百變怪來代表多個東西 那就是 polymorphism 1. 如果 A1 A2 A3... 和 B 的關係 是 extends 或 implements 讓 B b = (其中一個 A) a 這時百變怪 b 是(其中一個 A) b 的函式其實是(其中一個 A)的函式 2. override 和 1. 有點類似 但只侷限於 extends 的關係 3. overload 同一個函式名稱可以代表多個功能類似但細微不同的運算 不知道我這樣想對不對? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 69.181.64.182
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1518421867.A.5E0.html
1F:推 zephyrhymn: 可以看一下 #1A4lZ_dX 02/13 09:51
如果把 extends 和 implements 都看做類似的東西 先姑且把他們都叫做繼承 (大家先別玩文字遊戲) 我覺得 interface 其實就是一種可以多重繼承沒有實體的 class 有些人會用 is-a has-a 來區分 很容易會碰到多重繼承的問題 我覺得只有"未來不太可能會多重繼承的"才會用 extends class 的方式 例如那篇文說 我是(is-a)上班族 我是男朋友 上班族男朋友是 interface (implements) 這和 has-a = interface 的說法相抵觸 又說 BMWCar 繼承(extends) Car 而且 ToyotaCar 繼承 Car 同理 戰鬥機繼承飛機 運輸機繼承飛機 如果未來做出能在一般道路開又能在天上飛的交通工具 那豈不是這個交通工具就沒辦法同時繼承車子和飛機了嗎? 我並不是要提倡什麼都要用 interface 的確未來什麼事(多重繼承)都可能發生 但 extends class 還是有他的好處 他讓很多東西都可以重複使用 所以"未來不太可能會多重繼承的"還是可以用 extends class OOP 其實有很多缺點和限制 所以 Java 做了很多相對應的 workaround 之後再用文字遊戲美化這些 workaround interface 就是其中一個例子 很多 design pattern 也是 ※ 編輯: erikkk (69.181.64.182), 02/13/2018 14:15:33
2F:→ ssccg: has-a = interface的說法哪來的? has-a是composition吧 02/13 16:26
3F:→ ssccg: interface...就是interface,從外顯的功能來定義 02/13 16:28
4F:→ ssccg: 你用車子和飛機會覺得衝突,是因為你定義的Car = 路上走 02/13 16:29
5F:→ ssccg: Airplane = 空中飛,這很明顯是從外顯功能定義是interface 02/13 16:29
6F:→ ssccg: 繼承關係是以實作為本體的,Car應該是指由底盤車身引擎... 02/13 16:32
7F:→ ssccg: 以特定方式組成的類別,如果未來可以飛的車,組成方式是以 02/13 16:32
8F:→ ssccg: 現在的車子加上飛行功能,那就是Car : Flyable 02/13 16:33
9F:→ ssccg: 不然不用未來,現在飛機就能在路上走了啊 02/13 16:33
10F:→ ssccg: 如果這個外顯功能不只是描述,還包含實作,現在interface 02/13 16:39
11F:→ ssccg: 也支援default method了(在OOP叫Mixin) 02/13 16:41
12F:→ erikkk: 那說法不是我說的 02/14 03:22
13F:→ erikkk: 所以你的說法是 功能用interface分 實體用extends class 02/14 03:23
14F:→ erikkk: 那如果飛機越做越像車子 車子也越做越像飛機 02/14 03:24
15F:→ erikkk: 你還是會遇到多重繼承的問題 02/14 03:24
16F:→ erikkk: 你只是硬套上一個實體(架構 組成方式)不會改變的限制 02/14 03:25
17F:→ erikkk: 我猜想在這種情況下你可能就選一邊站 飛機或車子 02/14 03:26
18F:→ erikkk: 或是另開一個class 02/14 03:27
19F:→ ssccg: 說真的如果兩個東西接近到可以用一個類別來modeling,那 02/14 05:29
20F:→ ssccg: refactor成一個也是很正常的,我覺得不能多重繼承是限制, 02/14 05:30
21F:→ ssccg: 但不是缺陷,不用提這個例子也有無數該重寫的情況了 02/14 05:31







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP