Bar*_*ach 10 java oop polymorphism
我写了下面这段代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
I'm in a plane
I'm in the best Airbus!
I'm in a plane
Run Code Online (Sandbox Code Playgroud)
不出所料的两个第一调用给予I'm in a plane和I'm in the best Airbus!分别.
Plane planeAirbus = new Airbus();
Run Code Online (Sandbox Code Playgroud)
该方法将此对象视为平面,即使真实对象是空中客车.甚至当我添加abstract到 class Plane,没有什么变化和上次调用的结果仍然是I'm in a plane
所以问题是为什么多态在方法参数和调用中不起作用?有什么目的吗?它是如何工作的?
| 归档时间: |
|
| 查看次数: |
2556 次 |
| 最近记录: |