Re: [問題] 請問interface到底是做什麼用的?

看板java作者時間19年前 (2006/04/14 12:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串16/33 (看更多)
> 發信人: kazenol.bbs@ptt.cc (隨便啦) 看板: Java > 標 題: Re: [問題] 請問interface到底是做什麼用的? > 發信站: 批踢踢實業 (2006/04/14 Fri 02:49:27) > > ※ 引述《godfat (godfat 真常)》之銘言: > : ※ 引述《kazenol (隨便啦)》之銘言: > 嗯...這邊我的問題是,物件的compareTo方法,可不可以直接定義在物件的class裡? > 因為物件去繼承介面,也是要在自己裡面去定義方法,那為什麼不自己來呢? > 從多重繼承的字面來看,應該是會使用到父母類別的方法或變數,可是介面裡寫的 > 東西,除了跟父母類別的方法同名以外,我不知道繼承介面可以得到父母類別的什麼 > 東西?而且其他不是父母類別的類別,萬一有了同樣名稱的方法,那不就變成同時也 > 去繼承這個第三者了? 您的意思是不是說, 既然到最後 Class 本身都要提供方法的實作 那幹麻還要繼承介面? 直接把它編到 Class 裡面就好了? 如果是的話, 原因很簡單: 因為您用的是靜態型別語言 (static typing language) 您有一個模組, 根據某個概念來寫, 參數要宣告型態, 於是他會綁死於那個形態 使用繼承的好處, 可以讓你的程式跟某個型別解耦 (decuple) 使用子類別的實作 如果今天用的是動態語言, 使用它們的 Duck Typing 特性 或使用 C++ Template 的 Type Inference 自動推導型別的特性 就不會綁死於某個型別, 當然也就不用去繼承某個介面, 然後用 late binding 來取用 這時候繼承可能變的比較單純一點, 就是純粹繼承實作吧! (不確定) 不過要不要多重繼承應該跟這個比較沒關連, 因為同為 Dynamic Typing Language Python 就有多重繼承語法在定義類別的時候; 而 Ruby 使用的是 Mixin Module 來做到 > 其他幾位大大的寫法,我能理解其中的:先定義一個規範,其他要繼承這個類別的 > 就要去把規範的內容寫出來。就好像是體委會丟一個建立二軍的公文要求中職六隊 > 去建立二軍,但是體委會什麼目標、進程都沒有,要六隊自己提出建立二軍的規劃表 > 然後上繳體委會,所以六隊提出的內容也會不一樣,但是基本上都有依照體委會"建立 > 二軍"的目標去做。 > > 可是不見得每個二軍規劃表都有像la new一樣有"球員專用餐廳"啊,如果要使用 > 二軍.餐廳()這個func,不就會卡住?如果中職六隊不去繼承體委會這個介面,他們也 > 可以不用理會建立二軍這個規範。那是什麼原因這些class必須去繼承這個介面呢? > > > -- ╭┬╮ ││╭─﹏﹏────────────── Web bbs http://bbs.ice.cycu.edu.tw └┬┘│中原資工神秘之旅 Post by a │ ╰﹏╯ From:61-224-87-60.dynamic.hinet.ne ╰﹏﹏bbs.ice.cycu.edu.tw﹏﹏Ω
文章代碼(AID): #14FoN400 (java)
討論串 (同標題文章)
文章代碼(AID): #14FoN400 (java)