Re: [問題] 想請問interface的具體意義
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 29 篇):