Что означает интерфейс как зависимость класса в Kotlin? - PullRequest
1 голос
/ 08 мая 2020
interface SomeInterface {
        fun someFunction()
}

class SomeClass(private val someInterface: SomeInterface) {

}

Что это значит? Насколько я знаю, интерфейс не может создавать экземпляры объектов, и если это возможно, то где мне реализовать someFunction()?

1 Ответ

4 голосов
/ 08 мая 2020

Вы правы, что не можете создать экземпляр SomeInterface напрямую, но вы можете передать реализации своего интерфейса в SomeClass. Таким образом, SomeClass может использовать someFunction(), но не заботится о деталях реализации интерфейса нижнего уровня (также называемых полиморфизмом).

interface SomeInterface {
    fun someFunction()
}

class SomeClass(private val someInterface: SomeInterface) {
    fun doSomething() = someInterface.someFunction()
}

class SomeImplementation(): SomeInterface {
    override fun someFunction() {
        println("did something")
    }
}

fun main() {
    val someClass = SomeClass(SomeImplementation())
    someClass.doSomething()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...