如何从kotlin中的伴随对象调用父方法

Dan*_*elD 1 kotlin

我有一个超级课程:

open class A {
    fun doStuff() {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个子类扩展了:

class B: A() {
   companion object {
        doStuff() //compile error
   }
}
Run Code Online (Sandbox Code Playgroud)

如何从伴侣对象调用我的doStuff()方法?

asc*_*sco 8

你不能.

伴随对象大致相当于Java中的static关键字.的doStuff()类的功能A(及其子类)只能从那个类的一个实际的对象称为(如A().doStuff()B().doStuff())

当试图从B同伴对象中调用该函数时,没有可以调用该函数的A(或B)对象,因为您处于静态上下文中.

如果您编写的Java等效于您发布的内容,则会收到错误消息

无法从静态上下文引用非静态方法

这比你可能从Kotlin的编译器得到的更具描述性,这里有很好的解释.