【发布时间】:2017-06-20 17:13:21
【问题描述】:
假设我有一个带有抽象方法的抽象类 Animal
public abstract Animal mateWith(Animal mate);
问题是,如果我创建子类 Snake 和 Armadillo,那么这样的调用将是合法的:
mySnake.mateWith(myArmadillo);
但我只希望蛇能够与蛇交配。我需要能够定义这样的东西:
public abstract Animal_Of_My_Class mateWith(Animal_Of_My_Class mate);
这在 Java 中可行吗?
【问题讨论】:
-
在 C++ 中,您可以使用 RTTI (
dynamic_cast),它有点“反多态性”。 -
“我只希望蛇能够与蛇交配。”来吧,给爱一个机会。
-
@Kayaman 确实如此。这种设计不允许您建模,例如,狮子与狮子和a Lion mating with a Tiger 交配。
标签: java oop abstract-class