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

M.T*_*M.T 31 java kotlin

对于类和方法,Kotlin openfinalJava中的相同.

open对于标记为的字段,我在下面的课程中给出了什么open

@MappedSuperclass
abstract class BaseEntity() : Persistable<Long> {
     open var id: Long? = null
}
Run Code Online (Sandbox Code Playgroud)

更新 这不重复Kotlin中'open'和'public'之间的区别什么?

open对属性的关键字感兴趣

更新

openclass可以继承.
open有趣的可以覆盖
val属性是finaljava中的字段

open财产怎么样?

use*_*612 29

正如您所说,open关键字允许您在类声明中使用时覆盖类.因此,将属性声明为open,允许子类覆盖属性本身(例如,重新定义getter/setter).该关键字是必需的,因为在Kotlin final默认情况下一切都是" ",这意味着你不能override它(类似于C#,如果你有经验).

请注意,您的类是隐式声明的,open因为它abstract不能直接创建该类的实例.


Laj*_*pad 15

Java中的final方法:一种无法覆盖的方法.

Java中的final类:无法扩展的类.

因为在Kotlen中类和方法的情况下,open相当于Java中的final,所以Kotlin中的open方法是可覆盖的,而Kotlin中的open类是可扩展的.