[作业1]
------------------------------------
使用抽象类和接口实现适配器模式设计。涉及的类和接口分别为ButtonListener(接口),
其中含有click() / dbclick() / keyUp() / keyDown()等方法。
ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现。
Button类中添加addListener(ButtonListener l)方法。
答:
/*
定义一个接口,让接收到值判断做出相应动作,接口接收的值需要一个监视器接收
注意问题:a.接口实现全部实现即使是空实现。b.定义一个监视器接收值用接口类
*/
//定义接口
interface ButtonListener{
public void click();
public void dbclick();
public void keyUp();
public void keyDown();
}
//定义按钮适配器类 适配器中对非click方法进行默认实现
abstract class ButtonAspter implements ButtonListener{
public void click(){}
public void dbclick(){}
public void keyUp(){}
public void keyDown(){}
}
//如果是单击,实现单击事件
class ButtonClick extends ButtonAspter{
public void click(){
System.out.println("单击");
}
}
//如果是双击,实现双击事件
class ButtonDbClick extends ButtonAspter{
public void dbclick(){
System.out.println("双击");
}
}
//监听器
class Button{
private ButtonListener ll;
//添加监听器
public void addListener(ButtonListener ll){
this.ll=ll;
}
//模拟单击事件
public void click(){
ll.click();
}
//模拟双击事件
public void dbclick(){
ll.dbclick();
}
}
class AdaptDemo{
public static void main(String[] args){
//单击
Button bt=new Button();
ButtonClick bb=new ButtonClick();
bt.addListener(bb);
bt.click();
//双击
Button bt2=new Button();
ButtonDbClick bb2=new ButtonDbClick();
bt2.addListener(bb2);
bt2.dbclick();
}
}
[作业2]
------------------------------------
阐述什么是多态。
为什么函数可以覆盖,而属性不能覆盖?
a.同一消息可以根据不同对象给出不同的行为方式。同一事物不同形态。
b.对于一个对象来说属性是自身的东西,属于资产不可覆盖,而函数是行为方法,不容纳数据,可以覆盖。