【发布时间】:2016-07-18 22:29:10
【问题描述】:
我确信对此有一些解决方案或模式,但我无法清楚地表达问题以找到正确的答案。
我有一个接口,ICar:
public interface ICar {
void SetMake(String make);
String GetMake();
}
我有课,汽车:
public class Car implements ICar {
private String make;
public void SetMake(String make) { this.make = make; }
public String GetMake() { return make; }
我在另一个类中有一个方法,它不知道 Car。本着多态性的精神,我希望这个方法返回一个 ICar,以便有人可以创建自己的 ICar 实现并将该方法用于他们的汽车:
...//class preamble
public ICar myMethod() {
ICar myCar = new ICar();
myCar.SetMake("Ferrari");
return myCar;
}
我不确定为什么这样的事情不起作用。由于 ICar 包含方法 SetMake,因此每个实现也必须包含此方法。当然,jvm 可以以某种方式将方法调用排队,然后在方法的具体化可用时运行它们?
另一个想法是将新创建的 ICar 实现作为参数传递给 myMethod 并调用它的方法,但我觉得这可能不是一个干净的实现,因为我每次都需要创建 Car 的实例.此外,如果没有无参数构造函数,我将不得不用虚拟数据(也不干净)来实例化它。
我觉得我对如何实现这样的事情缺乏一些了解,并且想知道是否有人可以提供帮助?
谢谢。
【问题讨论】:
标签: java design-patterns interface polymorphism