[作业1]

------------------------------------

使用抽象类和接口实现适配器模式设计。涉及的类和接口分别为ButtonListener(接口),

其中含有click() / dbclick() / keyUp() / keyDown()等方法。

ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现。

Button类中添加addListener(ButtonListener l)方法。


//按钮监听接口
interface ButtonListener
{
    public void onClick();
    public void onDbclick();
    public void onKeyUp();
    public void onKeyDown();
} 
//Button监听器适配器
abstract class ButtonAdapter implements ButtonListener
{
    public void onDbclick(){}
    public void onKeyUp(){}
    public void onKeyDown(){}
}
class MyListener extends ButtonAdapter
{
    public void onClick(){
        System.out.println("点击1次");
    }
        public void onDbclick(){
        System.out.println("点击2次");
        }
}
class Button
{
//按钮的监听器
    private ButtonListener listener;
//添加监听器
    public void addListener (ButtonListener l){
        this.listener = l;
    }
    public void click(){
        listener.onClick();
    }
    public void dbClick(){
        listener.onDbclick();    
    }
}
class AdapterDemo
{
    public static void main (String[] args){
        MyListener ml = new MyListener();
        Button b = new Button();
        b.addListener(ml);
        b.click();
        b.dbClick();
    }
}

[作业2]

------------------------------------

阐述什么是多态。

为什么函数可以覆盖,而属性不能覆盖?

答:

定义:某一类事物的多种存在形态。

   对继承的类来讲,使用父类类型引用子类的对象。

   对于接口来说,可以使用接口引用实现了该接口的类所创建的对象。

属性是资产,容纳数据的地方,函数是行为,不容纳和存储数据,所以函数可以被覆盖,而属性不能。