在 Kotlin 中,open
与 Java 中的 not final
相同,用于类和方法。
对于标记为 open
的字段,open
在以下类中为我提供了什么?
@MappedSuperclass
abstract class BaseEntity() : Persistable<Long> {
open var id: Long? = null
}
更新 这不是 What is the difference between 'open' and 'public' in Kotlin? 的重复项
我对属性的 open
关键字感兴趣
更新
open
类可以被继承。
open
fun 可以被覆盖
val
属性是 java 中的 final
字段
open
属性呢?
最佳答案
正如您所说,open
关键字允许您在类声明中使用时覆盖类。因此,将属性声明为 open
,允许子类覆盖属性本身(例如,重新定义 getter/setter)。该关键字是必需的,因为在 Kotlin 中,默认情况下所有内容都是“final
”,这意味着您不能 override
它(类似于 C#,如果您有相关经验的话) .
请注意,您的类被隐式声明为 open
,因为它是 abstract
,因此您不能直接创建该类的实例。
关于java - Kotlin 中字段的 `open` 关键字是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49076121/