昨天方法調用的,我有一個面試,我得到了以下方案:衝突使用接口在Java中
有3類,即Main.java, MobilePhone.java, DeskPhone.java
和一個接口ITelephone.java
。 powerOn()
方法在類別MobilePhone.java
和DeskPhone.java
中實施。
創建MobilePhone
類的實例後,如何在DeskPhone
類中調用powerOn()
方法?換句話說,如何在Main
類的最近兩次調用中打印「您處於DeskPhone類」和「您處於MobilePhone類」?
有沒有其他方法可以解決這個問題,而無需在任何一個類中重命名powerOn()
方法?
Main.java
public class Main {
public static void main(String[] args) {
ITelephone timsPhone;
timsPhone = new DeskPhone(123456);
timsPhone.powerOn();
timsPhone = new MobilePhone(45678);
//Question begins here
timsPhone.powerOn();
timsPhone.powerOn();
}
}
ITelephone.java
public interface ITelephone {
void powerOn();
}
MobilePhone.java
public class MobilePhone implements ITelephone{
private int myNumber;
public MobilePhone(int myNumber) {
this.myNumber = myNumber;
}
@Override
public void powerOn() {
System.out.println("You are in MobilePhone class");
}
}
DeskPhone.java
public class DeskPhone implements ITelephone {
private int myNumber;
public DeskPhone(int myNumber) {
this.myNumber = myNumber;
}
@Override
public void powerOn() {
System.out.println("You are in DeskPhone class");
}
}
使用顯式轉換'((DeskPhone)timsPhone).powerOn();' –
@IvanPronin這只是給你一個'ClassCastException'。 – Kayaman
當你將MobilePhone分配給DeskPhone對象時,timsPhone會丟失對它的引用 – Sarkhan