Kotlin中默认访问器的实现是什么

时间:2018-05-14 09:29:19

标签: kotlin

我有一个这样的课程

class Square(var width: Int, var height: Int) {
    var color : String = "red"
}

根据我的理解,Kotlin的编译器会考虑宽度,高度和颜色是Square类的属性,因此它会自动为这些属性生成setter和getter。

使用属性颜色,我想应该喜欢它的getter和setter

var color : String = "red"
get() = field
set(value) { field = value}

但是宽度和高度属性的默认setter和getter怎么样。这些属性没有初始值,因此他们不能拥有" field" getter和setter中的标识符。有谁知道答案?

1 个答案:

答案 0 :(得分:2)

如果需要在类中存储简单属性,并且希望通过具有相同名称的构造函数参数初始化它们,则放置在类声明的标头中的属性是一种方便。如果你使用它们,你就放弃了为它们提供自定义setter和getter的能力 - 这只能对类的主体中的属性进行。

否则,其getter的默认实现(以及var s的setter)与类体中的属性相同。它们只返回(并设置)后备字段的值。

编辑,跟进上面的注释:这也意味着构造函数中的属性总是必须初始化,它们不能被计算属性,因为你不能给它们的getter和setter不会使用他们的支持领域。