擴充卡解決了 當我們想用某一方法時該方法不符合我們的引用規則, 此時可以使用類擴充卡或對象擴充卡:
問題場景:
我有一個Usb口的鍵盤,但電腦上隻有midi口,怎麼解決接口不比對的問題呢?
解決方式:擴充卡
類擴充卡:
Midi接口
public interface Midi {
void connectHost();
}
Usb 接口
public interface Usb {
void connectKeyBoard();
}
public class UsbImpl implements Usb{
@Override
public void connectKeyBoard() {
System.out.println("異常牛逼的的Usb連接配接了鍵盤,可以悄悄了");
}
}
擴充卡
public class Adapter extends UsbImpl implements Midi{
@Override
public void connectHost() {
connectKeyBoard();
}
}
擴充卡使用
public class TestMain {
public static void main(String[] args) {
//這裡Midi 的引用指向了子類Adapter的執行個體,子類重寫了Midi的方法,并在方法中調用Usb的方法
Midi mi = new Adapter();
mi.connectHost();
}
}
對象擴充卡:
Midi接口
public interface Midi {
void connectHost();
}
Usb 接口
public interface Usb {
void connectKeyBoard();
}
擴充卡
public class Adapter implements Midi{
private Usb usb;
public Adapter(Usb usb) {
super();
this.usb = usb;
}
@Override
public void connectHost() {
usb.connectKeyBoard();
}
}
擴充卡使用
public class TestMain {
public static void main(String[] args) {
Midi mi = new Adapter(new UsbImpl()); //構造傳參
mi.connectHost();
}
}