open class Animal(val name: String) {
open fun makeSound(): String {
return "$name издаёт звук"
}
}
class Dog(name: String) : Animal(name) {
override fun makeSound(): String {
return "$name говорит: Гав-гав!"
}
fun fetch(): String {
return "$name приносит палку"
}
}
class Cat(name: String) : Animal(name) {
override fun makeSound(): String {
return "$name говорит: Мяу!"
}
fun climb(): String {
return "$name залез на шкаф"
}
}
fun main() {
val animals = listOf<Animal>(
Dog("Шарик"),
Cat("Мурка"),
Dog("Бобик"),
Cat("Барсик")
)
for (animal in animals) {
println(animal.makeSound())
if (animal is Dog) {
println(animal.fetch())
}
if (animal is Cat) {
println(animal.climb())
}
}
}