gpt4 book ai didi

java - Java中使用Interface调用方法的冲突

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:04 29 4
gpt4 key购买 nike

昨天,我参加了面试,并得到了以下场景:

有 3 个类,即 Main.java、MobilePhone.java、DeskPhone.java 和一个接口(interface) ITelephone.javapowerOn() 方法在 MobilePhone.javaDeskPhone.java 两个类中实现。

如何在创建 MobilePhone 类实例后调用 DeskPhone 类中的 powerOn() 方法?换句话说,如何在 Main 类的最后两个调用中打印“你在 DeskPhone 类中”和“你在 MobilePhone 类中”?

有没有另一种方法可以解决这个问题而无需重命名任何一个类中的 powerOn() 方法?

主.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();
}

手机.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");
}
}

桌面电话.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");
}
}

最佳答案

MobilePhone 对象分配给不同的局部变量。

在当前代码中,一旦 timsPhone 变量的值被 MobilePhone 对象替换,DeskPhone 对象将无法访问,您无法调用其 powerOn() 方法。

建议代码:

ITelephone timsDeskPhone = new DeskPhone(123456);
timsDeskPhone.powerOn();
ITelephone timsMobilePhone = new MobilePhone(45678);
timsMobilePhone.powerOn();
timsDeskPhone.powerOn();

输出

You are in DeskPhone class
You are in MobilePhone class
You are in DeskPhone class

关于java - Java中使用Interface调用方法的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45576442/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com