[作业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.对于一个对象来说属性是自身的东西,属于资产不可覆盖,而函数是行为方法,不容纳数据,可以覆盖。