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

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

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

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



interface ButtonListener

{

    public void click();

    public void dbclick();

    public void keyUp();

    public void keyDown();

}


abstract class ButtonAdapter implements ButtonListener{

    public void dbclick(){


    }

    public void keyUp(){



    }

    public void keyDown(){




    }





}



class ButtonListener extends ButtonAdapter

{


    public void click(){

        System.out.println("i click");

    }




}



class Button

{

    private ButtonListener listener;

    public void addListener(ButtonListener lsn){

        this.listener=lsn;

    }


    public void clickb(){

        listener.click();

    }



}



class AdapterDemonew

{

    public static void main(String [] args){

        Button btn1=new Button();

        ButtonListener blr=new ButtonListener();

        btn1.addListener(blr);

        btn1.click();


    }

}



作业2

阐述什么是多态。

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

答:多态就是多种形态,继承中,父类引用子类对象,father s=new son();

接口中,接口引用该接口的类所创建的对象。

因为属性是有数据的,是原来就有的,函数是构造出来的方法,不存储数据,所以可以覆盖。