简体   繁体   中英

Implement a Kotlin interface in another file

I'd like to implement some interface methods in another file, using extensions.

I have a feeling it's not possible, but I'd love to do that.

Is this possible?

Here is the idea :

MyClass.kt

class MyClass : MyInterface {

}

MyClassExtension.kt

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

That is not possible to implement the interface in the other file. There are still some possibilities.

You may split your implementation into several abstract classes, eg abstract class A : Interface , abstract class B : A and so on. Each class can be in its own file.

The second alternative, that does not let one implement an interface, rather split method implementations is called extension functions. https://kotlinlang.org/docs/reference/extensions.html

Extension functions are only able to access public API of a class. Extension functions cannot implement interface methods in that case.

Use the following syntax for the declaration:

fun MyClass.method2() { ... }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM