1.使用抽象类和接口实现适配器模式设计。

public class Button {
	private ButtonListener listener;
	
	public void addListener(ButtonListener listener){
		this.listener = listener;
	}
	
	public void click(){
		listener.click();
	}
}
public interface ButtonListener {
	public void click();
	public void dbclick();
	public void keyUp();
	public void keyDown();
}
public abstract class ButtonListenerAdapter implements ButtonListener{
	@Override
	public void click() {
		System.out.println("适配器对click方法的默认实现");
	}
	
	@Override
	public void dbclick() {
		System.out.println("适配器对dbclick方法的默认实现");
	}
	
	@Override
	public void keyDown() {
		System.out.println("适配器对keydown方法的默认实现");
	}
	
	@Override
	public void keyUp() {
		System.out.println("适配器对keyup方法的默认实现");
	}
}
public class MyButtonListener extends ButtonListenerAdapter{
		
}
public class Main {
	public static void main(String[] args) {
		Button b  = new Button();
		MyButtonListener listener = new MyButtonListener();
		b.addListener(listener);
		b.click();
	}
}


2.阐述什么是多态。

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

答:

a.什么是多态

    多态就是从不同的角度去看数据,这些数据构成一个对象的多种状态,比如:员工的特点是有薪水和编号

,但要站在生物的角度去看员工那就是有鼻子有眼睛.对象没有变,只是观察的角度改变了,这就是多态.

b.为什么函数能覆盖属性却不能

    属性保存的是数据,是表示一个对象的重要资产,故只能被继承但不能被修改.