在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
属性怎么样?
答案 0 :(得分:18)
正如您所说,open
关键字允许您在类声明中使用时覆盖类。因此,将属性声明为open
,允许子类覆盖属性本身(例如,重新定义getter / setter)。该关键字是必需的,因为在Kotlin中默认情况下一切都是“final
”,这意味着您不能override
它(类似于C#,如果您有相关经验)。
请注意,您的类隐式声明为open
,因为它是abstract
,因此您无法直接创建该类的实例。
答案 1 :(得分:9)
Java中的最终方法:一种无法覆盖的方法。
Java中的最终类:无法扩展的类。
Kotlin中的开放类和方法与Java中的final相反,open方法可以覆盖,而开放类可以在Kotlin中扩展。