筆記本電腦(laptop)通常具備使用USB設備的功能。
在生產時,筆記本都預留了可以插入USB設備的USB接口,
但具體是什麼USB設備,筆記本廠商並不關心,只要符合USB規格的設備都可以。
定義USB接口,具備最基本的開啓功能和關閉功能。鼠標和鍵盤要想能在電腦上使用,
那麼鼠標和鍵盤也必須遵守USB規範,實現USB接口,否則鼠標和鍵盤的生產出來也無法使用。
分析: 進行描述筆記本類,實現筆記本使用USB鼠標、USB鍵盤
①USB接口,包含打開設備功能、關閉設備功能。
②筆記本類,包含開機功能、關機功能、使用USB設備功能。
③鼠標類,要實現USB接口,並具備點擊的方法。
④鍵盤類,要實現USB接口,具備敲擊的方法。
//USB接口
package 電腦USB接口;
/**
* @Author: Jason
* @Date: 2019/8/14 22:57
* @Version 1.0
*/
public interface USB {
public abstract void open(); //打開設備
public abstract void close(); //關閉設備
}
//電腦類
public class Computer {
public void powerOn(){
System.out.println("電腦開機");
}
public void powerOff(){
System.out.println("電腦關機");
}
public void usbDevice(USB usb) {
usb.open(); //打開設備
usb.close(); //關閉設備
}
}
//鼠標就是一個USB設備
public class Mouse implements USB{
@Override
public void open() {
System.out.println("打開鼠標");
}
@Override
public void close() {
System.out.println("關閉鼠標");
}
}
//鍵盤就是一個USB設備
public class Keyboard implements USB{
@Override
public void open() {
System.out.println("打開鍵盤");
}
@Override
public void close() {
System.out.println("關閉鍵盤");
}
}
//測試類
public class DemoTest {
public static void main(String[] args) {
//首先創建一個筆記本
Computer computer = new Computer();
computer.powerOn();
/* //準備一個鼠標供電腦使用
Mouse mouse = new Mouse();
//首先進行向上轉型,當作USB來用
USB usb = mouse;
*/
//或者用多態
USB usbMouse = new Mouse(); //左父右子 多態
//參數是USB類型,剛好傳遞進去的是USB鼠標
computer.usbDevice(usbMouse);
//創建一個鍵盤
Keyboard keyboard = new Keyboard(); //沒有使用多態寫法 無向上轉型
//方法參數是USB類型,但傳遞進去的是一個實現對象
computer.usbDevice(keyboard); //這裏本是USB類型 但keyboard可以 這裏也自動發生了向上轉型
// computer.usbDevice(new Keyboard()); //也可以
//實現類向上轉型成爲接口類型
computer.powerOff();
}
}
對於自動轉型實例理解
package 電腦USB接口;
/**
* @Author: Jason
* @Date: 2019/8/15 0:24
* @Version 1.0
*/
public class 自動向上轉型理解 {
public static void main(String[] args) {
method(10.10); //正確 double --> double
method(20); //正確 int --> double 自動轉型
int a = 89;
method(a); //int --> double double範圍大 自動向上轉型
}
public static void method( double num){
System.out.println(num);
}
}
鼠標、鍵盤類的特有方法 使用向下轉型
//鼠標就是一個USB設備
public class Mouse implements USB{
@Override
public void open() {
System.out.println("打開鼠標");
}
@Override
public void close() {
System.out.println("關閉鼠標");
}
public void click(){
System.out.println("點擊鼠標");
}
}
//鍵盤就是一個USB設備
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("電腦關機");
}
public void usbDevice(USB usb) {
usb.open(); //打開設備
if(usb instanceof Mouse){ //必須先判斷
Mouse mouse = (Mouse) usb; //鼠標特有方法 向下轉型
mouse.click();
}else if(usb instanceof Keyboard){ //必須先判斷
Keyboard keyboard = (Keyboard) usb; //鍵盤特有方法 向下轉型
keyboard.type();
}
usb.close(); //關閉設備
}
}
添加完這幾處 再運行測試類