作者adrianshum (Alien)
看板java
标题Re: [问题] 想请问interface的具体意义
时间Mon Jan 22 18:43:10 2007
※ 引述《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