Re: [問題] 想請問interface的具體意義
※ 引述《jaw109 (潑文章都是為了養小雞)》之銘言:
: [前言]
: 是這樣子的,我是C++的使用著
: 在閱讀SoftwareSolutions書籍或文章的時候
: 常常會看見JAVA的interface
: 我可以理解interface存在的立場
: 但我更想知道interface更具體的使用....
: (或者,用C++的觀念去理解...... if it is possible)
於 C++ 而言, 那只是一個 super class 而已.
只是這 super class 沒有任何 implementation,
裡面通通都是 pure virtual function.
: [範例]
: 假設有個抽象類別,叫做交通工具
: 其下分別衍生出汽車與機車
: 然而,交通工具又引用著一個叫做電動雨刷的介面
: 我們都可以理解,所有的汽車都應該支援電動雨刷
: 而且所有的機車都應該不支援電動雨刷
: [問題]
: 1. 正如JAVA所規範的,interface是一個"has-a"的關係;如果我使用
: 機車的電動雨刷的話,會出現error嗎? 又或者只是 do nothing而已?
interface 並不是 has-a 的關係.
interface 也是 is-a
: 2. 不管是哪一種交通工具,他們對interface的引用是靜態連結 還是動
: 態聯結?
: ie.
: 靜態連結 (這只是我對JAVA語法的胡亂猜測... XD)
: class 汽車 : public 交通工具
: {
: 電動雨刷<裕隆牌的雨刷> m_雨刷;
: };
: class 機車 : public 交通工具
: {
: 電動雨刷<NULL> m_雨刷;
: };
: 動態聯結
: class 汽車 : public 交通工具
: {
: 電動雨刷 m_雨刷;
: 汽車() : m_雨刷(裕隆牌的雨刷) {} //建構子
: };
: class 機車 : public 交通工具
: {
: 電動雨刷 m_雨刷;
: 汽車() : m_雨刷(NULL) {} //建構子
: };
如果你現在知道了 interface 也只不過是一個
只有 pure virtual function 的 superclass,
這堆東西就不合理了吧? :)
不過我看不明白, 你例子的 "動態靜態" 在 C++
中看來也是不太合理... 我不太明白你在表達什麼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.72.0.45
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 29 篇):