给出以下代码:
open class Foo {
companion object {
fun fez() {}
}
}
class Bar : Foo() {
companion object {
fun baz() { fez() }
}
}
baz()
可以致电fez()
Foo.fez()
Bar.baz()
Bar.fez()
我如何实现最终行为?
答案 0 :(得分:0)
伴侣对象是其周围类的静态成员:
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对象没有该方法。