サブクラスによってオーバーライドされたときに、ベースメソッドに同じ特定のサブクラスインスタンスを強制的に取り込むにはどうすればよいですか?
すなわち:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
論理的には、は別のCow
にしかできないはずです。ただし、そうすると、これは実際には基本クラスのメソッドをオーバーライドしません(サブクラスにその存在を強制したいので、これをオーバーライドします)。mateWith
Cow
override def mateWith(that: Cow)
他のインスタンスがCowタイプであることを確認し、そうでない場合は例外をスローすることができます-これは私の最良のオプションですか?もっと動物がいる場合はどうなりますか?例外をスローするコードを繰り返す必要があります。