为什么要声明一个接口,然后用Java实例化一个对象?
问题内容:
我和一个朋友正在学习Java。今天,我们正在研究接口,并且讨论了如何使用接口。
我的朋友向我展示的示例代码包含以下内容:
IVehicle modeOfTransport1 = new Car();
IVehicle modeOfTransport2 = new Bike();
其中 IVehicle 的是,公司在汽车和自行车两个类实现的接口。定义接受 IVehicle
作为参数的方法时,可以使用接口方法,并且在运行代码时,上述对象可以正常工作。但是,这在声明汽车和自行车时非常正常,就像通常这样:
Car modeOfTransport1 = new Car();
Bike modeOfTransport2 = new Bike();
因此,我的问题是-在声明和实例化 modeOfTransport 对象时,为什么要使用前一种方法而不是后者?有关系吗?
问题答案:
没关系。
真正重要的地方是需要在IVehicle上运行的其他接口。如果他们接受参数并以IVehicle的形式返回值,那么代码将更易于扩展。
如您所述,这些对象中的任何一个都可以传递给接受IVehicle作为参数的方法。
如果您具有使用了Car或Bike特定操作的后续代码,则将它们声明为Car或Bike将是有利的。特定于汽车和自行车的操作将可用于每个相关对象,并且两者均可作为IVehicle使用(即可以通过)。