Làm thế nào tôi có thể ép buộc các phương thức cơ sở thực hiện cùng một cá thể lớp con cụ thể khi được phân lớp quá mức?Ghi đè các phương thức lớp con với các đối số được phân lớp?
tức là .:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
Logic, một Cow
chỉ nên có thể mateWith
Cow
khác. Tuy nhiên, nếu tôi làm override def mateWith(that: Cow)
, điều này không thực sự ghi đè lên phương thức lớp cơ sở (mà tôi muốn nó, vì tôi muốn thực thi sự tồn tại của nó trong lớp con).
Tôi có thể kiểm tra để đảm bảo trường hợp khác thuộc loại Cow và ném ngoại lệ nếu không phải - đây có phải là lựa chọn tốt nhất của tôi không? Nếu tôi có nhiều động vật thì sao? Tôi sẽ phải lặp lại mã ngoại lệ.
Thỏa thuận ngọt ngào, Scala thuận tiện như heck! –
Tôi không chắc chắn về "thuận tiện", nhưng nó mang tính biểu cảm. –
Nghĩ rằng tôi sẽ xem lại điều này - đây được gọi là [đa hình liên kết f] (https://twitter.github.io/scala_school/advanced-types.html#fbounded). –