java 板


LINE

介面第一個功能, 大家都說是可避免多重繼承,那麼首先要回答,為何多重繼承在Java是必須避免的呢? 若是現有A、B、C三個類別,然後這三個類別關係是:C is a A;C is also a B。 那麼萬一A、B類別有一模一樣名稱的方法,C類別要繼承的是哪個方法呢?? 這樣就不能確定了,所以這是Java必須避免多重繼承的原因。 而又為何介面可以避免掉多重繼承這個問題呢?介面不是可以被多重實作,萬一某類別 多重實作不同介面,而不同介面又有相同名稱的方法呢?? 不同介面若有相同名稱的方法,在Java中會被當作是擁有相同功能、行為之方法。 因為介面內定義的方法,本來就是用一種名稱去對應一種行為的, 例如swim就只會是游泳,不會是別的行為;run就只會是跑,不會是別的行為; attack就只會是攻擊,也不會是別的行為。 既然這樣,若不同介面擁有相同名稱之方法,那就會被Java認為是相同的方法,既然方法都一樣,那類別實作介面的方法時,實作一個就好了,因為都是一樣的方法。 所以,若是多重實作介面的類別遇到需實作相同名稱之方法,實作其中一個方法即可。 因此,介面透過這個「相同名稱就是相同行為,實作一遍就好」的方式,避開了 多重繼承會出現的問題,也就是說介面確實是可以取代多重繼承的。 ----------------------------------------------------------- 介面的第二個功能,是詳開規格書。最著名的例子就是JDBC API與Servlet API。 Java官方利用介面去規定以上的API必須實作那些功能,各家資料庫與Web container廠商 實作後,將實作後的結果打包成jar檔,jar檔被使用者使用,可以直接透過 事先規定之介面,也就是JDBC、Servlet API, 來使用各家資料庫與Web container廠商實作之結果。 也就是說使用者使用相同/一種的API,即可使用多種不同的資料庫與Web container。 ---------------------------------------------------------------- 介面的第三個功能,是貼標籤,著名的例子是runnable介面跟serialize介面。 透過對類別貼上這樣的標籤,即可給這些類別增加特殊功能。 ------------------------------------------------------------- 介面的第四個功能,是提供多型。 因為介面型別的reference,與實作該介面的類別之物件,兩者關係是 該類別物件擁有該介面所定義的行為。因此該reference可以直接指向該物件。 也就實現了多型的效果。而多型又可以大幅降低程式的複雜程度。 ------------------------------------------------------------- 介面的第五個功能,是降低程式相依性,進而好維護。 因為類別是依賴於介面而非依賴於實作後的類別,如果類別是依賴於某個實作的類別, 萬一被依賴的類別有所修改,依賴的類別很可能也會跟著被變化。這樣 一個類別被改動,其他類別也要因此做出改變,要改變很多類別,程式就不易維護, 若類別是依賴於介面,因為介面本身並不含實際的code,因此 修改介面並不會直接造成類別被變化,也就能降低程式相依性,進而好維護。 ---------------------------------------------------- 總結之上討論,介面共有五個功能, 而這也是介面之所以在Java專案架構中十分重要之原因。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.22.85 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1682946959.A.916.html
1F:推 Isaea: 推,講解的很透徹 05/03 00:38
2F:推 Hsieh455125: 推優文 05/04 13:22
3F:推 andytung444: 推,寫得很容易懂 05/16 19:52
4F:推 ywk: 好文推 05/29 06:51
5F:推 xrururururu: 好奇問 第一項 多重繼承取不同方法名字不就可以避免 06/06 15:16
6F:→ xrururururu: ? 06/06 15:16
7F:推 Jichang: 多重繼承的意思是 你想要 爸爸的功能 也要媽媽的功能 jav 06/14 12:15
8F:→ Jichang: a 無同時繼承兩個 但是可以用介面搭配 Delegation 來實現 06/14 12:15
9F:推 chyl13579: 好文堆堆 09/24 13:20
10F:推 goodice: 好文 10/08 23:01
11F:推 chyl13579: 推 12/03 08:15







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燈, 水草

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

TOP