Re: [問題] 請問interface到底是做什麼用的?
※ 引述《kazenol (隨便啦)》之銘言:
: 我大致能了解作者的意思,也明白您的意思。如果不讓演算法只是針對這個物件而用
: ,讓別的物件也能使用,用繼承我能理解,可是介面裡只是一個演算法的名稱,而實際
: 的演算法還是要寫在實作的物件裡。那麼不管父母類別裡的演算法函式怎麼寫的,去繼承
: 介面的子物件應該是看不到父母類別裡的方法,充其量是兒子知道父母有錢,但是怎麼
: 賺來的不知道,自己得要去想賺錢的方法。就算父母類別想將賺錢的演算法傳給其他人,
: 因為介面不准寫方法,也只能定義要賺錢()、會賺錢()這樣的口頭話。
: 所以我一直不懂的是,介面的多向繼承,到底是繼承了什麼?為何要去繼承?
: 介面寫的都是一些空的名詞啊,既沒繼承到實質的方法與變數,同時子物件自己也必須
: 要寫自己的方法。
: 我唯一能想到的解釋是。一個人coding可以知道哪邊要做什麼事,跟一堆人coding可能
: 就有個主設計師把規則先寫出來,後面的人都得照這規則去繼續寫,就像是把大綱寫在
: 程式裡這樣吧。
我想大家回答的問題集中在多種繼承與介面的關係,我覺得原波其實
沒有要問到那層面的事,我看起來他的問題簡單來說是懷疑「既然兒子自己也會賺錢
,為什麼一定要繼承父母會賺錢的介面」
我用另一個例子來說明
他的問題有點像「假設有個人對法律很了解,但為什麼一定要有律師執照
別人才能找他當律師」
對法律很懂是某個人的function。律師執照就像是一種interface,
這個interface定義擁有執照的人一定要很懂法律。因此雖然某個人很懂法律
(他有implement跟interface一樣的方法),但它沒有律師執照(沒有繼承介面),
但他就是沒有辦法當律師。也就是說律師執照是一種介面,我們要請某人當律
師時只要知道他有沒有律師執照(有沒有該interface),就知道我們可不可以
請他當律師。雖然律師執照只是一張紙(像原波說的「介面寫的都是一些空的名詞
啊,既沒繼承到實質的方法與變數,同時子物件自己也必須要寫自已的方法」),
但我們就是要繼承該介面。
這就是為什麼要繼承介面
這就是為什麼要有律師執照!?
我們不能在class中寫actionPerformed()就說他是actionListener
我們不能說自已很懂法律就說自己是律師
而以語言上來說,因為是靜態型別語言(前面某大大說過),所以一定
要繼承介面才能跟定義好的型別做某些互動。
說得很亂,不知道有沒有回答到問題= =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.136.147.164
※ 編輯: Rokund 來自: 140.136.147.164 (04/14 15:58)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章