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

看板java作者 (!H45)時間17年前 (2007/01/22 20:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/29 (看更多)
※ 引述《jaw109 (潑文章都是為了養小雞)》之銘言: [恕刪] : [問題] : 1. 正如JAVA所規範的,interface是一個"has-a"的關係;如果我使用 : 機車的電動雨刷的話,會出現error嗎? 又或者只是 do nothing而已? : 2. 不管是哪一種交通工具,他們對interface的引用是靜態連結 還是動 : 態聯結? : ie. : 靜態連結 (這只是我對JAVA語法的胡亂猜測... XD) : class 汽車 : public 交通工具 : { : 電動雨刷<裕隆牌的雨刷> m_雨刷; : }; : class 機車 : public 交通工具 : { : 電動雨刷<NULL> m_雨刷; : }; : 動態聯結 : class 汽車 : public 交通工具 : { : 電動雨刷 m_雨刷; : 汽車() : m_雨刷(裕隆牌的雨刷) {} //建構子 : }; : class 機車 : public 交通工具 : { : 電動雨刷 m_雨刷; : 汽車() : m_雨刷(NULL) {} //建構子 : }; 首先我們來討論汽車、交通工具、電動雨刷、裕隆牌的雨刷、機車之間的關係: .汽車和機車是一種交通工具 .而汽車有電動雨刷;機車沒有電動雨刷 .有些汽車的雨刷是裕隆牌的雨刷 然後開始設計交通工具、汽車、機車: interface 交通工具 {...} class 汽車 implements 交通工具 {...} class 機車 implements 交通工具 {...} 再來設計電動雨刷、裕隆牌的雨刷: interface 電動雨刷 {...} class 裕隆牌的雨刷 implements 電動雨刷 {...} 回頭把電動雨刷加到汽車的類別裡 class 汽車 implements 交通工具 { 電動雨刷 m_雨刷; } 最後,裕隆汽車的雨刷是裕隆牌的雨刷,則留到創造汽車物件的時候處理 (虛擬碼) 汽車 創造汽車出來(汽車類型 type) { if (type is 裕隆的汽車) { return new 汽車 with 裕隆牌的雨刷; } } 主函式範例: public static void main(String args[]) { 交通工具 vehicle = 創造汽車出來(裕隆的汽車); } 如果是動態連結的話 只要把上面的繼承關係全部改為委派關係就好了 (transform the inheritance to aggregation) 有錯請指正 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.85
文章代碼(AID): #15jB30A0 (java)
討論串 (同標題文章)
文章代碼(AID): #15jB30A0 (java)