【发布时间】:2011-12-04 17:03:46
【问题描述】:
我和一个朋友正在学习 Java。今天我们正在研究接口,我们就如何使用接口进行了一些讨论。
我朋友给我看的示例代码包含以下内容:
IVehicle modeOfTransport1 = new Car();
IVehicle modeOfTransport2 = new Bike();
IVehicle 是在汽车和自行车类中实现的接口。 当定义一个接受 IVehicle 作为参数的方法时,您可以使用接口方法,并且当您运行代码时,上述对象正常工作。但是,当您像通常这样声明汽车和自行车时,这非常有效:
Car modeOfTransport1 = new Car();
Bike modeOfTransport2 = new Bike();
所以,我的问题是 - 为什么在声明和实例化 modeOfTransport 对象时使用前一种方法而不是后一种方法?有关系吗?
【问题讨论】:
-
很多答案都被否决了。投反对票的人,想解释一下原因吗?
-
@stivlo:很多答案根本没有解决问题。
-
我将解释我的反对意见:这里的每个人似乎都开始解释多态性或接口的目的,这不是 OP 所要求的。 OP 询问是立即转换为接口类型还是推迟转换。
-
@Chris 不,他不是。他特别问“你为什么要使用前一种方法而不是后一种方法”。他甚至没有提到选角。
-
@Chris:多么可怕的逻辑飞跃!拒绝投票的可怕理由。你应该感到羞耻。
标签: java oop interface polymorphism