我正在处理Kotlin / Java编译器的以下问题。
想象以下情形:假设First
是具有最终功能的Java类,而Second
是扩展了First
且具有与{{1}中的最终功能同名的功能的Kotlin类}类,例如:
First
// Java class
class First {
final void foo() { }
}
很显然,这是错误的,因为不能覆盖最终功能// Kotlin class
class Second: First() {
fun foo() { }
}
。但是,编译成功通过,并且在运行时得到foo()
。
这是编译器的正确行为吗?我以为这种情况会有一些验证。谢谢!