Re: [問題] 想請問interface的具體意義

看板java作者 (godfat 真常)時間17年前 (2007/01/22 18:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/29 (看更多)
※ 引述《jaw109 (潑文章都是為了養小雞)》之銘言: : [問題] : 1. 正如JAVA所規範的,interface是一個"has-a"的關係;如果我使用 : 機車的電動雨刷的話,會出現error嗎? 又或者只是 do nothing而已? no, 你想得太複雜了,Java interface 就只是一個 pure abstract class 而已 寫成 C++ 的話就是這樣: class 電動雨刷{ // 其實我是 interface... public: virtaul void 刷刷刷() = 0; }; class 汽車: public 交通工具, public 電動雨刷{ // 沒錯,就是多重繼承,只是電動雨刷沒有任何實作 public: void 開車(); void 刷刷刷(){ /*一定要實作,否則不能產生汽車實體*/ } }; class 機車: public 交通工具{ // 不繼承電動雨刷 void 開車(); }; 所以 Java Interface 其實是功能變弱的多重繼承 上面寫成 Java 的話就是這樣: interface 電動雨刷{ public void 刷刷刷(); // 不需要實作,寫了會 error // 忘了要不要加 public..... XD 懶得查證了 } class 汽車 extends 交通工具 implements 電動雨刷{ public void 開車(){ /*...*/ } public void 刷刷刷(){ /*一定要實作,不實作 compile error*/ } } class 機車 extends 交通工具{ // 沒有實作電動雨刷 public void 開車(){ /*...*/ } } 然後兩者都可以這樣做: C++: 電動雨刷* abc = new 汽車; // 無參數時括號可省略 Java: 電動雨刷 abc = new 汽車(); // 括號一定要加 -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18
文章代碼(AID): #15j9SR3t (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 4 之 29 篇):
文章代碼(AID): #15j9SR3t (java)