作者jaw109 (泼文章都是为了养小鸡)
看板java
标题Re: [问题] 想请问interface的具体意义
时间Mon Jan 22 21:34:02 2007
恕删.....
有朋友问到我所谓的静态动态是什麽意思
抱歉让你们困惑了
我所谓的静态是指汽车跟雨刷(或机车跟雨刷)
其之间的关系,在定义该类别的时候就已经写死
他们的命运就已经注定...
可能是再class declaration里面就宣告出一个member
或者是类似下面这位朋友所谓的"一种特别的多重继承"
那动态的意思是
交通工具这个类别拥有一个指向
电动雨刷
的物件,在建构时其决定要不要时坐电动雨刷(汽车要,机车不要)
而就下面这为朋友所述 看起来就是我所谓的静态...
不过在最底下我还有一个疑问....
※ 引述《godfat ()》之铭言:
: 所以 Java Interface 其实是功能变弱的多重继承
: 上面写成 Java 的话就是这样:
: interface 电动雨刷{
: public void 刷刷刷(); // 不需要实作,写了会 error
: // 忘了要不要加 public..... XD 懒得查证了
: }
: class 汽车 extends 交通工具 implements 电动雨刷{
: public void 开车(){ /*...*/ }
: public void 刷刷刷(){ /*一定要实作,不实作 compile error*/ }
: }
: class 机车 extends 交通工具{ // 没有实作电动雨刷
: public void 开车(){ /*...*/ }
: }
: 然後两者都可以这样做:
: C++:
: 电动雨刷* abc = new 汽车; // 无参数时括号可省略
: Java:
: 电动雨刷 abc = new 汽车(); // 括号一定要加
我对Java这一行很有兴趣....
(不过,
电动雨刷那个token应该要改成
交通工具吧? 至少C++是如此的...)
如果我这麽写(Java code)
交通工具 Civic = new 汽车();
Civic.刷刷刷(); // 会执行刷雨刷的动作,这OK
交通工具 Dio = new 机车();
Dio.刷刷刷(); // 这会发生什麽事情?
do nothing吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.86.69.46
※ 编辑: jaw109 来自: 219.86.69.46 (01/22 21:35)