首页 > 解决方案 > 接口作为 Kotlin 中类的依赖项是什么意思?

问题描述

interface SomeInterface {
        fun someFunction()
}

class SomeClass(private val someInterface: SomeInterface) {

}

这是什么意思?据我所知,接口不能实例化对象,如果可以,我应该在哪里实现someFunction()

标签: kotlininterface

解决方案


您不能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()
}

推荐阅读