为什么我们在Java中使用接口引用类型?

atm*_*506 6 java polymorphism

我即将参加我的第一个面向对象编程课程的期末考试,但我仍然不了解多态性的概念.

假设我有一个抽象类"Vehicle",这个类有一个名为"Aircraft"的子类.我的问题是,这两个代码有什么不同?

Aircraft Jetplane = new Aircraft();
Run Code Online (Sandbox Code Playgroud)

Vehicle Jetplane = new Aircraft();
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 14

在第二个,然后Jetplane可能是从车辆继承的任何其他东西,而不仅仅是飞机.例如,你可以有类似的东西

Vehicle veh = null;
if (someCondition)
    veh = new Aircraft();
else
    veh = new Boat();
Run Code Online (Sandbox Code Playgroud)

这不能在第一个样本中完成,因为船不是飞机.


duf*_*ymo 5

第一个不是多态的:喷气式飞机的编译时和运行时类型都是飞机.

第二个是多态的.编译时类型的jetplane是Vehicle,但运行时类型是Aircraft.