Kotlin - 访问派生类型中的伴随对象成员

Kotlin - accessing companion object members in derived types

给定以下代码:

open class Foo {
    companion object {
        fun fez() {}
    }
}

class Bar : Foo() {
    companion object {
        fun baz() { fez() }
    }
}

如何实现最终行为?

伴随对象是其周围对象的静态成员class:

public class Foo {
   public static final Foo.Companion Companion;

   public static final class Companion {
      public final void fez() {
      }

     //constructors
   }
}

fez() 的调用被编译为:

Foo.Companion.fez();

仅供参考:显示的 Java 代码显示了 Kotlin 生成的字节码的表示形式。

因此,您无法调用 Bar.fez(),因为 Bar 中的 Companion 对象没有该方法。