多态性在 Java 的方法参数中不起作用
2022-09-03 02:13:51
我写了以下代码:
class Plane {}
class Airbus extends Plane {}
public class Main {
void fly(Plane p) {
System.out.println("I'm in a plane");
}
void fly(Airbus a) {
System.out.println("I'm in the best Airbus!");
}
public static void main(String[] args) {
Main m = new Main();
Plane plane = new Plane();
m.fly(plane);
Airbus airbus = new Airbus();
m.fly(airbus);
Plane planeAirbus = new Airbus();
m.fly(planeAirbus);
}
}
结果是:
I'm in a plane
I'm in the best Airbus!
I'm in a plane
不出所料,前两个调用分别给出和。I'm in a plane
I'm in the best Airbus!
Plane planeAirbus = new Airbus();
该方法将此对象视为飞机,即使实际对象是空中客车。即使我添加到 ,也没有任何变化,上次调用的结果仍然是abstract
class Plane
I'm in a plane
所以问题是为什么多态性在方法参数和调用中不起作用?这有什么目的吗?它是如何工作的?