Re: [問題] 請問interface到底是做什麼用的?
> 發信人: 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﹏﹏Ω
討論串 (同標題文章)
完整討論串 (本文為第 16 之 33 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章