Вы правы, что не можете создать экземпляр 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()
}