[作業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(); // 按鍵釋放
}
// 按鈕監聽器適配器
abstract class ButtonAdapterimplements ButtonListener {
public void onDbclick() {
}
public void onKeyUp() {
}
public void onKeyDown() {
}
}
class MyListener extends ButtonAdapter {
public void onClick() {
System.out.println("i click one !");
}
}
class YourListener extends ButtonAdapter {
public void onClick() {
System.out.println("you click one !");
}
}
// 按鈕
class Button {
// 按鈕的監聽器
private ButtonListener listener;
// 添加監聽器
public void addListener(ButtonListener lsn) {
this.listener = lsn;
}
// 模擬單擊事件
public void click() {
// 處理單擊事件
listener.onClick();
}
}
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]
------------------------------------
闡述什麼是多態。
爲什麼函數可以覆蓋,而屬性不能覆蓋?
答:
定義:某一類事物的多種存在形態。
對繼承的類來講,使用父類類型引用子類的對象。
對於接口來說,可以使用接口引用實現了該接口的類所創建的對象。
屬性是資產,容納數據的地方,函數是行爲,不容納和存儲數據,所以函數可以被覆蓋,而屬性不能。