在Kotlin的构造函数中为参数添加一个私有修饰符有什么不同?
我不确定Kotlin编写的以下两个构造函数的区别
class ConcreteItem(val title: String) : Item() { }
和
class ConcreteItem(private val title: String) : Item() { }
正如你所看到的,唯一的区别是标题字段之前的“私人”修饰符。 它将如何影响标题领域的范围?
以下代码:
class ConcreteItem(val title: String) : Item() { }
是一个捷径:
class ConcreteItem(title: String) : Item() { val title: String = title }
val title
缺少显式访问修饰符意味着public
:
class ConcreteItem(title: String) : Item() { public val title: String = title }
同样,下面的代码:
class ConcreteItem(private val title: String) : Item() { }
是一个捷径:
class ConcreteItem(title: String) : Item() { private val title: String = title }
考虑到这一点,两个声明之间的区别只是宣布公共财产与私人财产。
如果应用private
修饰语,则不会合成公共的“getter”,从而其他类可以询问“title”的值。 否则会。
您几乎总是希望您的构造函数参数可用于该类中的所有代码。 这将是从构造函数参数中创建私有成员variables的惯用方法。
class ConcreteItem(private val title: String) {}
如果你类似于Java,那就意味着:
class ConcreteItem { private final String title; public ConcreteItem(final String title) { this.title = title; } }