Загрузка данных


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: List<Animal> = listOf(
        Dog("Шарик"),
        Cat("Мурка"),
        Dog("Бобик"),
        Cat("Барсик")
    )

    for (animal in animals) {
        println(animal.makeSound())

        when (animal) {
            is Dog -> println(animal.fetch())
            is Cat -> println(animal.climb())
        }
    }
}