[作业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)函数是过程或行为,子类继承父类后可以通过重写父类方法进行覆盖,

           被调用完成相应内容后,通过弹栈结束;

           但属性属于资产,进行存储数据等,因此函数可以覆盖但属性不能。