如果具有重写方法的类之间存在继承,则其实现运行时多态(想象一下超类具有指向子类对象的引用)。但现在假设我们有一个接口,它有两个相同的方法但具有不同的参数(如方法重载)。因此,当一个类实现该接口时,它将包含相同的所有接口方法。据说它覆盖了该类中的接口方法。
问题(它试图实现什么?(编译时/运行时)多态性?
以下面的代码为例
interface RemoteControl {
void turnOn();
void turnOn(int channel);
}
class TV implements RemoteControl {
public void turnOn() {
System.out.println("TV is turned on");
}
public void turnOn(int channel) {
System.out.println("TV is turned on. Channel: " + channel);
}
}
class AC implements RemoteControl {
public void turnOn() {
System.out.println("AC is turned on");
}
public void turnOn(int temperature) {
System.out.println("AC is turned on. Temperature: " + temperature + " degrees");
}
}
public class UserCode {
public static void main(String[] args) {
RemoteControl tvRemote = new TV(); // Create a TV object using the RemoteControl interface reference
RemoteControl acRemote = new AC(); // Create an AC object using the RemoteControl interface reference
tvRemote.turnOn();
tvRemote.turnOn(5);
acRemote.turnOn();
acRemote.turnOn(25);
}
}
现在在上面的代码中你能告诉我它试图实现什么类型的多态性吗?
我的理论 --> 这是**静态多态性** 因为如果具有 Overriden 方法的类之间涉及任何继承,我们就可以说它是运行时多态性。但这里不涉及类之间的继承
尽管上面我们在实现接口的各个类中重写了接口的方法,但它仍然实现了静态多态性。这里说“重写方法”是不合适的,因为接口只是用来定义方法,而不是实际描述它们。 所以下面的部分是在编译时决定的?
RemoteControl tvRemote = new TV();
tvRemote.turnOn();
tvRemote.turnOn(5);