[作业1]
------------------------------------
使用抽象类和接口实现适配器模式设计。涉及的类和接口分别为ButtonListener(接口),
其中含有click() / dbclick() / keyUp() / keyDown()等方法。
ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现。
Button类中添加addListener(ButtonListener l)方法。
代码:
//按钮监听器接口
interface ButtonListener{
public void onClick();//单击事件
public void onDbclick();//双击事件
public void onKeyDown();//按键按下
public void onKeyUp();//按键释放
}
//按钮
class Button{
//按钮的监听器
private ButtonListener listener ;
//添加监听器
public void addListener(ButtonListener lsn){
this.listener = lsn ;
}
//模拟单击事件
public void click(){
//处理单击事件
listener.onClick();
}
//模拟双击事件
public void dbClick(){
listener.onDbclick();
}
}
//按钮监听器适配器
abstract class ButtonListenerAdapter implements ButtonListener{
public void onDbclick(){
}
public void onKeyUp(){
}
public void onKeyDown(){
}
}
class MyListener extends ButtonListenerAdapter{
public void onClick(){
System.out.println("i click one !");
}
}
class YourListener extends ButtonListenerAdapter{
public void onClick(){
System.out.println("you click one !");
}
}
class AdapterDemo{
public static void main(String[] args){
//button1
Button btn1 = new Button();
MyListener l = new MyListener();
btn1.addListener(l);
btn1.click();
//button2
Button btn2 = new Button();
YourListener yl = new YourListener();
btn2.addListener(yl);
btn2.click();
}
}
[作业2]
------------------------------------
阐述什么是多态。
为什么函数可以覆盖,而属性不能覆盖?
1)多种形态。
对继承的类来讲,使用父类类型引用子类的对象。
通过有继承关系的类之间,父类调用子类对象,从不同的角度调用方法
对于接口来说,可以使用接口引用实现了该接口的类所创建的对象。
2)函数是过程或行为,子类继承父类后可以通过重写父类方法进行覆盖,
被调用完成相应内容后,通过弹栈结束;
但属性属于资产,进行存储数据等,因此函数可以覆盖但属性不能。