为什么要声明一个接口,然后用Java实例化一个对象?

一个朋友和我正在学Java。我们今天正在看接口,我们就如何使用接口进行了一些讨论。

我的朋友向我展示的示例代码包含:

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

IVehicle是在汽车和自行车类中实现的接口。
当定义一个接受IVehicle作为参数的方法时,可以使用接口方法,当运行代码时,上述对象正常工作。但是,如果你通常喜欢这样的话,这样就能很好地宣告汽车和自行车:

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

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

最佳答案
没关系。

真正重要的是在其他需要在IVehicle上运行的接口。如果他们接受参数并返回值作为IVehicle,则代码将更容易扩展。

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

如果您有使用汽车或自行车的具体操作的后续代码,则将其声明为汽车或自行车将是有利的。汽车和自行车的具体操作可用于每个相关对象,并且两者都可以作为IVehicle使用(即可以被传递)。

转载注明原文:为什么要声明一个接口,然后用Java实例化一个对象? - 代码日志