作者hougzou (学无止境,啥时才摔到底?)
看板java
标题Re: [问题] 想请问interface的具体意义
时间Thu Jan 25 21:23:15 2007
※ 引述《jaw109 (泼文章都是为了养小鸡)》之铭言:
: [前言]
: 我可以理解interface存在的立场
: 但我更想知道interface更具体的使用....
: (或者,用C++的观念去理解...... if it is possible)
: [范例]
: 假设有个抽象类别,叫做交通工具
: 其下分别衍生出汽车与机车
: 然而,交通工具又引用着一个叫做电动雨刷的介面
: 我们都可以理解,所有的汽车都应该支援电动雨刷
: 而且所有的机车都应该不支援电动雨刷
: [问题]
: 1. 正如JAVA所规范的,interface是一个"has-a"的关系;如果我使用
: 机车的电动雨刷的话,会出现error吗? 又或者只是 do nothing而已?
拍写~ 我只会写code以及注解~ (interface在code尾巴)
public class AutoMobile {
private boolean windshield = true; // 实例变数,汽车雨刷预设为「有」
public static void main(String[] args){
new AutoMobile().rainingAction(); // 产生实例并呼叫雨天动作
}
public void rainingAction(){ // 这是汽车雨天的动作
Chinesisch ch = setAction(windshield); // 以有雨刷与否得出雨刷动作
System.out.println(ch.getAction()); // 执行雨刷动作
// 接下来就是其他动作...
}
private Chinesisch setAction(boolean windshield){
Chinesisch ch = new Chinesisch(){ // 以下这里实作介面方法
private String act = null;
public void setAction(boolean windshield){
if(windshield){
act = "twice left then once right";
}else{
act = "do nothing";
}
}
public String getAction(){
return act;
}
};
ch.setAction(windshield); // 实际运算方才实作的方法
return ch;
}
}
interface Chinesisch{ // 这是电动雨刷的interface
public void setAction(boolean windshield); // 这是介面方法
public String getAction(); // 由有没有挡风玻璃计算动作
}
如果你将汽车类别换为机车,雨刷改为false,你再试看看,其实并没你想像那麽难~
就算是has-a,当has not的时候,设计者还是可以自行撤销父类别方法或实作介面因应。
--
No Dying Skills, ● - Dame! New tech...
but Lazy Users. .\)
http://www.wretch.cc/blog/hougzou ___________ ﹒ ︵ √\ ___________________
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.122.31