当被子类覆盖时,如何强制基方法采用相同的特定子类实例?
IE:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
从逻辑上讲, aCow
应该只能到mateWith
another Cow
。但是,如果我这样做override def mateWith(that: Cow)
,这实际上并没有覆盖基类方法(我想要它,因为我想强制它在子类中存在)。
我可以检查以确保另一个实例是 Cow 类型,如果不是则抛出异常 - 这是我最好的选择吗?如果我有更多的动物怎么办?我将不得不重复抛出异常的代码。