筆記本電腦
筆記本電腦( laptop)通常具備使用USB裝置的功能。在生産時,筆記本都預留了可以插入USB裝置的USB接口,但具體是什麼USB裝置,筆記本廠商并不關心,隻要符合USB規格的裝置都可以。
定義USB接口,具備最基本的開啟功能和關閉功能。滑鼠和鍵盤要想能在電腦上使用,那麼滑鼠和鍵盤也必須遵守
USB規範,實作USB接口,否則滑鼠和鍵盤的生産出來也無法使用。
案例分析
進行描述筆記本類,實作筆記本使用USB滑鼠、USB鍵盤
- USB 接口,包含開啟功能、關閉功能
- 筆記本類,包含運作功能、關機功能、使用 USB裝置功能
- 滑鼠類,要實作 USB接口,并具備點選的方法
- 鍵盤類,要實作 USB接口,具備敲擊的方法
定義USB接口:
public interface USB {
public abstract void open();//打開裝置
public abstract void close();//關閉裝置
}
定義滑鼠類:
public class Mouse implements USB {
@Override
public void open() {
System.out.println("打開滑鼠!");
}
@Override
public void close() {
System.out.println("關閉滑鼠!");
}
public void onClick(){
System.out.println("點選滑鼠!");
}
}
定義鍵盤類:
public class Keyboard implements USB {
@Override
public void open() {
System.out.println("打開鍵盤!");
}
@Override
public void close() {
System.out.println("關閉鍵盤!");
}
public void type(){
System.out.println("鍵盤輸入");
}
}
定義筆記本類:
public class Computer {
public void powerOn(){
System.out.println("筆記本電腦開機!");
}
public void powerOff(){
System.out.println("筆記本電腦關機!");
}
//使用USB裝置的方法,使用接口作為參數。
public void useDevice(USB usb){
usb.open();
if(usb instanceof Mouse){//一定要先判斷
Mouse mouse = (Mouse) usb;//向下轉型
mouse.onClick();
}else if(usb instanceof Keyboard){
Keyboard keyboard = (Keyboard) usb;//向下轉型
keyboard.type();
}
usb.close();
}
}
測試類,代碼如下:
public class DemoMain {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn();
/*//準備一個滑鼠,供電腦使用
Mouse mouse = new Mouse();*/
//首先向上轉型
USB usbMouse = new Mouse();
//參數是USB類型,我正好傳遞進去的就是USB滑鼠
computer.useDevice(usbMouse);
//建立一個USB鍵盤
Keyboard keyboard = new Keyboard();//沒有使用多态
//方法參數是USB類型,傳遞進去的是實作類對象
computer.useDevice(keyboard);//正确寫法,也發生了向上轉型。
computer.powerOff();
}
}