看板 java 關於我們 聯絡資訊
※ 引述《swpoker (swpoker)》之銘言: : 標題: Re: [問題] 面試時被問到介面功能 : 時間: Thu Oct 17 09:40:16 2013 : : 介面存在的目的就是跟推文大大說的一樣 : 因為C的多重繼承直接導致不可思議的問題 : 也因為本身語言的機制導致無法從語言本身解決 : 例如 : A{methodA,methodC} : B{methodB,methodC} : XXX 繼承A,B : 那麼methodC是??? : 所以java解決這個問題,就是限制繼承的範圍 : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 163.29.28.131 : ※ 編輯: swpoker 來自: 163.29.28.131 (10/17 09:42) : → sbrhsieh:開頭提到的問題在多介面也會碰到 10/17 14:12 : → swpoker:但介面沒有實作~所以沒差~但類別繼承會有實作的問題 10/17 14:28 這種說法已看過多次,但老實說我覺得蠻沒有說服力的。 採用 interface 來實作多重型別時,就可以省去 ambiguity 的麻煩,是 一廂情願的想法。 當一個 class implements 了兩個擁有相同 name/signature method 的 interface 時,只能提供一個 implementation,但是兩個 interface 內的同 name/signature method 的意義不一定相同,所以你不總是能夠提供適當的 method implementation。 若"所以java解決這個問題"中的問題是指編譯時會產生有時讓人摸不著頭緒的 ambiguity 訊息,那我覺得 Java 的作法真的不算是一種進步。 多重實作繼承確實是麻煩的一件事,但是用同 name/signature 的 method 為例子 是不足以證明 interface 繼承是更好的作法。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.110.51
swpoker:沒錯!所以我不會只採用繼承作為解決的方案之一!!! 10/17 15:38
swpoker:反而我會認為使用"繼承"是必須要很小心的~不能依賴語言 10/17 15:39
swpoker:我曾經反對"獲得某個元件的功能就是用繼承"的作法 10/17 16:03
Killercat:贊成。如果真的搞到需要多蟲劑成,我會請設計者改包含 10/17 19:10