昨天方法调用的,我有一个面试,我得到了以下方案:冲突使用接口在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