[英]ArrayList in Java doesn't implement methods from Collection interface?
[英]Can interface type variable call methods from that interface in a class that doesn’t implement it?
我試圖理解這一點只是為了我自己的知識。 這是我的代碼的細分版本:
interface ILightningPhone {
void recharge();
void useLightning();
}
interface IMicroUsbPhone {
void recharge();
void useMicroUsb();
}
class LightningToMicroUsbAdapter implements IMicroUsbPhone {
private final ILightningPhone lightningPhone;
public LightningToMicroUsbAdapter(ILightningPhone lightningPhone) {
this.lightningPhone = lightningPhone;
}
@Override
public void useMicroUsb() {
System.out.println("MicroUsb connected");
lightningPhone.useLightning();
}
@Override
public void recharge() {
lightningPhone.recharge();
}
}
我正在嘗試理解接口,我只需要對以下內容進行解釋:
我注意到一個變量private final ILightningPhone lightningPhone;
在ILightningPhone
接口類型的 class 中聲明。 但是這個 class 沒有實現那個接口。 它是如何做到這一點的?
接下來我注意到在以下方法中:
public void useMicroUsb() { System.out.println("MicroUsb connected"); lightningPhone.useLightning();
變量lightningPhone
能夠從ILightningPhone
接口調用useLightning()
方法。 即使ILightningPhone
接口未在 class LightningToMicroUsbAdapter
中實現。 為什么它能夠做到這一點?
總的來說,我只是想了解為什么我們能夠在不實現該接口的 class 中創建接口類型的變量? 為什么在聲明該接口類型的變量時,我們能夠在未實現該接口的 class 中使用該接口中的方法?
如果需要,這是完整的代碼: https://en.wikipedia.org/wiki/Adapter_pattern
LightningToMicroUsbAdapter
class (或任何 class )可以有任何類型的成員 - 無論是String
, List
,甚至是ILightningPhone
。 擁有成員是“hasA”關系,而不是“isA”關系。
由於lightningPhone
是ILightningPhone
的一個實例,它可以調用該接口定義的useLightning
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.