Re: [問題] 面試時被問到介面功能
※ 引述《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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章