標籤:介面 適配器 成員變數 成員屬性 內部類
[作業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();//按鍵釋放
}
//按鈕
class Button{
//按鈕的監聽器
private ButtonListener listener ;
//添加監聽器
public void addListener(ButtonListener lsn){
this.listener = lsn ;
}
//類比單擊事件
public void click(){
//處理單擊事件
listener.onClick();
}
//類比雙擊事件
public void dbClick(){
listener.onDbclick();
}
}
//按鈕監聽器適配器
abstract class ButtonListenerAdapter implements ButtonListener{
public void onDbclick(){
}
public void onKeyUp(){
}
public void onKeyDown(){
}
}
class MyListener extends ButtonListenerAdapter{
public void onClick(){
System.out.println("i click one !");
}
}
class YourListener extends ButtonListenerAdapter{
public void onClick(){
System.out.println("you click one !");
}
}
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]
------------------------------------
闡述什麼是多態。
為什麼函數可以覆蓋,而屬性不能覆蓋?
1)多種形態。
對繼承的類來講,使用父類類型引用子類的對象。
通過有繼承關係的類之間,父類調用子類對象,從不同的角度調用方法
對於介面來說,可以使用介面引用實現了該介面的類所建立的對象。
2)函數是過程或行為,子類繼承父類後可以通過重寫父類方法進行覆蓋,
被調用完成相應內容後,通過彈棧結束;
但屬性屬於資產,進行儲存資料等,因此函數可以覆蓋但屬性不能。
本文出自 “11138113” 部落格,轉載請與作者聯絡!
大資料第六天內容