在另一个文件中实现Kotlin界面

时间:2019-02-15 14:36:46

标签: kotlin interface extension-methods

我想使用扩展名在另一个文件中实现一些接口方法。

我觉得这是不可能的,但是我很乐意这样做。

这可能吗?

这是个主意:

MyClass.kt

class MyClass : MyInterface {

}

MyClassExtension.kt

override MyClass.MyInterface.method1() {
}
override MyClass.MyInterface.method2() {
}

1 个答案:

答案 0 :(得分:0)

不可能在另一个文件中实现该接口。仍然有一些可能性。

您可以将实现分为几个抽象类,例如abstract class A : Interfaceabstract class B : A等。每个类都可以在自己的文件中。

第二种选择是不允许扩展一个接口,而是使用拆分方法实现。 https://kotlinlang.org/docs/reference/extensions.html

扩展功能只能访问类的公共API。在这种情况下,扩展功能无法实现接口方法。

使用以下语法进行声明:

fun MyClass.method2() { ... }