在 Kotlin 中,接口可以从自定义 class 派生吗?

In Kotlin, can an interface be derived from a custom class?

我刚开始学习 Kotlin,在阅读文档时遇到了以下代码片段:

internal class LifecycleObserver : MyLocationListener(
    private val context: Context,
    private val lifecycle: Lifecycle,
    private val callback: (Location) -> Unit)

这来自 https://developer.android.com/topic/libraries/architecture/lifecycle#kotlin,大约在页面的中间位置(以防万一我遗漏了一些对于理解此示例的上下文至关重要的内容)。 LifeCycleObserver 是一个接口,而 MyLocationListener 是一个用户定义的 class,假设是这种情况,在我看来,教程编写者已经从用户定义的 class。这有可能吗?如果是这样,这种 technique/set 技术的名称是什么?如果不是……好吧,同样的问题仍然适用。有了正确的术语,我的研究会比过去几天更有成效。感谢阅读。

我去过你提到的link。实际上这是他们的 kotlin 代码中的一个错误。当你切换到 java 代码时,你可以看到 class 被定义为,

class MyLocationListener implements LifecycleObserver {
    private boolean enabled = false;
    public MyLocationListener(Context context, Lifecycle lifecycle, Callback callback) {
        ...
    }
    ...
}

它对应的 kotlin 代码是,

internal class MyLocationListener(
    private val context: Context,
    private val lifecycle: Lifecycle,
    private val callback: (Location) -> Unit
) : LifecycleObserver {
    private var enabled = false
    ...
}

但不知何故,一个错误悄悄进入,LifecycleObserver 出现在“:”之前,而 MyLocationListner 出现在“:”之后。如果可以,请向他们报告该错误。

如您所知,接口不能派生自 class。