Зачем при создании объекта класса указывать тип интерфейса?

6048a88665cee007039726.png

Код со скриншота:

interface Do {
    fun doing ()
}

class Teacher() : Do {
    override fun doing () {
        println("Im teaching students..")
    }
}

class Programmer() : Do {
    override fun doing() {
        println("Im writing programs..")
    }
}

fun main() {

    val person1: Do = Programmer()
    person1.doing()

    val person2: Programmer = Programmer()
    person1.doing()

}


У нас есть интерфейс в котором есть абстрактный метод doing для реализации классов которые наследуют этот интерфейс, при создании объекта класса который наследует этот интерфейс мы можем указать тип как класса так и тип интерфейса, вопрос, есть ли разница какой тип указывать ?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
В таком примитивном примере разницы нет.
Но если будет функция, которая принимает Do, в неё можно будет передать объект любого подкласса Do
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы