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