У меня есть следующий код Kotlin. Запечатанный класс Animal
и два класса объектов Dog
и Cat
наследуются от закрытого класса Animal
. Я получаю эту ошибку в предложении when
в случае Cat.
Incompatible types: Cat and Dog
Почему выдает эту ошибку? Как я могу использовать запечатанный класс в Котлине для операций этого типа? Закрытый класс - хороший выбор для полиморфизма?
sealed class Animal {
abstract fun speak()
}
object Dog : Animal() {
override fun speak() { println("woof") }
}
object Cat : Animal() {
override fun speak() { println("meow") }
}
fun main(args: Array<String>) {
var i = Dog
i.speak()
when(i) {
is Dog -> {
print("Dog: ")
i.speak()
}
is Cat -> {
print("Cat: ")
i.speak()
}
}
}