【发布时间】:2016-12-28 08:44:00
【问题描述】:
我有一个抽象类的两个子类,每个子类都实现了它们超类的抽象方法。我希望每个返回类型都有不同的返回类型,尽管这些返回类型又是不同抽象类的子类。见下文:
public abstract class Gardener {
public abstract ArrayList<Flower> getFlowers();
}
public class GardererA extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Daisy>();
}
}
public class GardererB extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Rose>();
}
}
public abstract class Flower {}
public class Daisy extends Flower {}
public class Rose extends Flower {}
显然 Java 不允许我这样做,但我不知道如何获得此功能。有什么想法吗?
【问题讨论】:
-
为什么要在类名中添加
()?它们不是构造方法。 -
我看到了很多类而不是很多接口。我想看看需要了解不同 Gardener A 和 B 的客户端代码。我认为泛型可能会对您有所帮助,但我们需要了解更多细节。
-
@aastefanov 感谢您指出这一点。我编辑了我的问题来解决这个问题。
-
@emeraldjava 我提供的代码只是问题的一个例子,真正的代码正确使用了抽象类
标签: java inheritance abstract-class abstract