open class Base {
open fun v() {}
fun nv() {}
}
class Derived() : Base() {
override fun v() {}
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子.有人可以解释一下这个区别吗?这里是否必须打开关键字?
Wil*_*zel 35
是的,这两个open关键字在您的示例中都是必需的
您必须区分使用open类和函数.
类:open如果要从类继承,则需要在类上使用关键字.默认情况下,所有类都是final继承的,不能继承.
功能:在功能上,您需要open能够覆盖它.默认情况下,所有功能都是final,您无法覆盖它们.
编辑:因为我在评论中看到了一些混乱.
pokemzok:我有一个内部抽象类,我可以继承而没有任何问题.我也可以随意覆盖它抽象方法而不将它们声明为开放
抽象类是继承的,因为您无法实例化它们.事实上,他们不仅仅是open默认,他们不能final放在第一位.final并且abstract不兼容.这同样适用于abstract方法,它们必须被重写!
| 归档时间: |
|
| 查看次数: |
7670 次 |
| 最近记录: |