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

时间:2018-03-02 19:32:52

标签: java kotlin

在Kotlin中open与Java中的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乐趣可以被覆盖 val属性是java中的final字段

open属性怎么样?

2 个答案:

答案 0 :(得分:18)

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

请注意,您的类隐式声明为open,因为它是abstract,因此您无法直接创建该类的实例。

答案 1 :(得分:9)

Java中的最终方法:一种无法覆盖的方法。

Java中的最终类:无法扩展的类。

Kotlin中的开放类和方法与Java中的final相反,open方法可以覆盖,而开放类可以在Kotlin中扩展。