在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; } }