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

看板java作者 (學無止境,啥時才摔到底?)時間17年前 (2007/01/25 21:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串25/29 (看更多)
※ 引述《jaw109 (潑文章都是為了養小雞)》之銘言: : [前言] : 我可以理解interface存在的立場 : 但我更想知道interface更具體的使用.... : (或者,用C++的觀念去理解...... if it is possible) : [範例] : 假設有個抽象類別,叫做交通工具 : 其下分別衍生出汽車與機車 : 然而,交通工具又引用著一個叫做電動雨刷的介面 : 我們都可以理解,所有的汽車都應該支援電動雨刷 : 而且所有的機車都應該不支援電動雨刷 : [問題] : 1. 正如JAVA所規範的,interface是一個"has-a"的關係;如果我使用 : 機車的電動雨刷的話,會出現error嗎? 又或者只是 do nothing而已? 拍寫~ 我只會寫code以及註解~ (interface在code尾巴) public class AutoMobile { private boolean windshield = true; // 實例變數,汽車雨刷預設為「有」 public static void main(String[] args){ new AutoMobile().rainingAction(); // 產生實例並呼叫雨天動作 } public void rainingAction(){ // 這是汽車雨天的動作 Chinesisch ch = setAction(windshield); // 以有雨刷與否得出雨刷動作 System.out.println(ch.getAction()); // 執行雨刷動作 // 接下來就是其他動作... } private Chinesisch setAction(boolean windshield){ Chinesisch ch = new Chinesisch(){ // 以下這裡實作介面方法 private String act = null; public void setAction(boolean windshield){ if(windshield){ act = "twice left then once right"; }else{ act = "do nothing"; } } public String getAction(){ return act; } }; ch.setAction(windshield); // 實際運算方才實作的方法 return ch; } } interface Chinesisch{ // 這是電動雨刷的interface public void setAction(boolean windshield); // 這是介面方法 public String getAction(); // 由有沒有擋風玻璃計算動作 } 如果你將汽車類別換為機車,雨刷改為false,你再試看看,其實並沒你想像那麼難~ 就算是has-a,當has not的時候,設計者還是可以自行撤銷父類別方法或實作介面因應。 -- No Dying Skills, ● - Dame! New tech... but Lazy Users. .\) http://www.wretch.cc/blog/hougzou ___________ ﹒ ︵ √\ ___________________ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.122.31
文章代碼(AID): #15kAz8KZ (java)
討論串 (同標題文章)
文章代碼(AID): #15kAz8KZ (java)