我和一个 friend 正在学习Java。今天,我们正在研究接口(interface),并且讨论了如何使用接口(interface)。

我的 friend 向我展示的示例代码包含以下内容:

IVehicle modeOfTransport1 = new Car();
IVehicle modeOfTransport2 = new Bike();

IVehicle是在汽车和自行车类中都实现的接口(interface)。
定义接受IVehicle作为参数的方法时,可以使用接口(interface)方法,并且在运行代码时,上述对象可以正常工作。但是,在声明汽车和自行车时,这通常可以正常工作:
Car modeOfTransport1 = new Car();
Bike modeOfTransport2 = new Bike();

所以,我的问题是-在声明和实例化modeOfTransport对象时,为什么要使用前一种方法而不是后者?有关系吗?

最佳答案

没关系。

真正重要的地方是需要在IVehicle上运行的其他接口(interface)。如果它们接受参数并以IVehicle的形式返回值,则代码将更易于扩展。

如您所述,这些对象中的任何一个都可以传递给接受IVehicle作为参数的方法。

如果您具有使用了Car或Bike特定操作的后续代码,则将它们声明为Car或Bike将是有利的。特定于汽车和自行车的操作可用于每个相关对象,并且两者都可以作为IVehicle使用(即可以通过)。

10-01 02:48