Re: [問題] 面試時被問到介面功能

看板java作者 (十年一夢)時間10年前 (2013/10/17 16:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/14 (看更多)
※ 引述《popcorny (畢業了..@@")》之銘言: : ※ 引述《sbrhsieh (十年一夢)》之銘言: : : 這種說法已看過多次,但老實說我覺得蠻沒有說服力的。 : : 採用 interface 來實作多重型別時,就可以省去 ambiguity 的麻煩,是 : : 一廂情願的想法。 : : 當一個 class implements 了兩個擁有相同 name/signature method 的 interface : : 時,只能提供一個 implementation,但是兩個 interface 內的同 name/signature : : method 的意義不一定相同,所以你不總是能夠提供適當的 method implementation。 : : 若"所以java解決這個問題"中的問題是指編譯時會產生有時讓人摸不著頭緒的 : : ambiguity 訊息,那我覺得 Java 的作法真的不算是一種進步。 : : 多重實作繼承確實是麻煩的一件事,但是用同 name/signature 的 method 為例子 : : 是不足以證明 interface 繼承是更好的作法。 : 我覺得應該要這樣看 : 多重實作繼承很複雜難用. : 所以JAVA把繼承分成單一實作繼承(class)跟多重介面繼承(interface) : 所以interface算是解決多重"實作"繼承複雜的問題 : 但是沒有解決多重(介面)繼承signature collision的問題.. 這個我了解,針對其他版友的文是我覺得所提的點不能拿來說明「Java 選擇 interface 實現多重介面並捨棄多重實作繼承」是比較好的作法。 pure abstract class 本身與 Java interface 是等效的,沒有引入 interface (有別於 class)不代表就沒有介面繼承的觀念。 Java 的選擇是一種交易,付出的代價是你在多重介面繼承時,必定得自己寫一堆 boilerplate code(composition, delegation),不然就要透過 code-generation tool 或 bytecode engineering 的幫助。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.238.39.58
文章代碼(AID): #1INvy5xw (java)
討論串 (同標題文章)
文章代碼(AID): #1INvy5xw (java)