【发布时间】:2012-04-18 05:22:50
【问题描述】:
如何强制基方法在被子类覆盖时采用相同的特定子类实例?
即:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
从逻辑上讲,Cow 应该只能mateWith 另一个Cow。但是,如果我执行override def mateWith(that: Cow),这实际上并不会覆盖基类方法(我希望它这样做,因为我想强制它在子类中存在)。
我可以检查以确保另一个实例是 Cow 类型,如果不是则抛出异常 - 这是我的最佳选择吗?如果我有更多的动物怎么办?我将不得不重复抛出异常的代码。
【问题讨论】:
标签: scala inheritance overriding