java - Kotlin 中字段的 `open` 关键字是什么?

在 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/

相关文章:

arrays - Kotlin - 检查数组是否包含值的惯用方法

android - 运算符 == 不能应用于 Kotlin 中的 'Long' 和 'Int'

android - 实时模板在 Kotlin 中不起作用

android - 如何在 RecyclerView.ViewHolder 中使用 kotlin 绑

java - 为什么使用双冒号 (::) 在 Kotlin 中上课?

Kotlin - 等待函数

java - 在 IntelliJ IDEA : "No MessageCollector" 中编译

android - 将项目添加到 LiveData 列表时通知观察者

android - 具有初始值的 MutableLiveData

kotlin - 将列表分成几部分