Kotlin:为什么构造函数参数默认具有“内部”可见性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin:为什么构造函数参数默认具有“内部”可见性?相关的知识,希望对你有一定的参考价值。

如果我们有一个班级:

class Customer(val customerName: String) { }

它的构造函数参数qazxsw poi可以通过qazxsw poi访问(因为它也是一个属性)。如果我们想限制对此属性的访问,我们应该将其声明为customerName

由于在许多情况下来自Java世界(并且如果一个类不打算成为数据类),从构造函数参数分配的字段用于私有/受保护的使用,感觉就像在Kotlin中明确地声明它们getCustomerName()一样。

此外,默认情况下,Kotlin类是最终的,那么为什么不遵循这个属性的原则呢?我错过了什么吗?

答案

根据我们的经验,以及对现有代码库的一些实证研究,private / private可见性对于属性是最佳的。

此外,默认情况下,Kotlin类是最终的,那么为什么不遵循这个属性的原则呢?我错过了什么吗?

默认情况下属性为internal,即除非明确提供public修饰符,否则不能覆盖它们。

以上是关于Kotlin:为什么构造函数参数默认具有“内部”可见性?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin类与对象 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

Kotlin Vocabulary | Kotlin 默认参数

IntentService (kotlin) 的默认构造函数

Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

Kotlin 主构造函数 次构造函数 默认参数 init代码块 初始化顺序

如果类具有参数化构造函数,为啥Java不提供默认构造函数? [复制]