Bir alt sınıf tarafından geçersiz kılındığında, temel yöntemleri aynı belirli alt sınıf örneğinde almak için nasıl zorlayabilirim?Alt sınıf yöntemleri alt sınıf argümanlarla geçersiz kılınır mı?
yani .:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
Mantıken bir Cow
sadece mateWith
başka Cow
gerekir. Ancak, override def mateWith(that: Cow)
yaparsam, bu aslında temel sınıf yöntemini geçersiz kılmaz (alt sınıftaki varlığını güçlendirmek istediğim için).
Diğer örneğin İnek türüne sahip olduğundan emin olup olmadığını kontrol edebilir ve değilse bir istisna atar - bu en iyi seçeneğim mi? Ya daha fazla hayvanım varsa? İstisna atma kodunu tekrarlamak zorundayım.
Tatlı anlaşma, Scala heck gibi uygun! –
"Uygun" hakkında çok emin değilim, ama bu kadar etkileyici. –
Bunu tekrar düşünürdüm - bu [f-sınırlı-polimorfizm] olarak bilinir (https://twitter.github.io/scala_school/advanced-types.html#fbounded). –