Kotlin multiplatform expect/actual class , 一些方法分享

Kotlin multiplatform expect/actual class , some methods shared

是否可以在 KMM 中有一些 expect + abstract class? 项目是Android+iOS

我想共享一些 class,但部分方法应该是特定于平台的。

最好的方法是什么?也许是预期 class 的某种组合,实际 class 的共享父级?

示例,

expect class Logger {
    protected timer:Long = 0
    fun info(s:String)
    fun warning(s:String)
    fun resetTimer() {
         timer = 0
    }
}

据我所知,这样的例子是不可能的,因为预期 class 应该是接口而不是抽象 class。

两个平台的 resetTimer 方法可以相同。

有可能吗?

简短的回答是否定的。

您可以将 expect/actual 视为对特定平台的抽象,类似于接口,但灵活性要低得多(接口是对任何事物的抽象,而不仅仅是特定于平台的实现)

有多种选择,但无论如何您都需要将公共逻辑与预期声明分开。