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

如果我们有一个班级:

class Customer(val customerName: String) { } 

它的构造参数customerName可以通过getCustomerName()来访问(因为它也是一个属性)。 如果我们想限制访问这个属性,我们应该声明它是private

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

另外,Kotlin类是默认的最终的,所以为什么不遵循这个原则的属性? 我错过了什么吗?

根据我们的经验以及对现有代码库的实证研究, internal / public可见性对于属性来说是最好的。

另外,Kotlin类是默认的最终的,所以为什么不遵循这个原则的属性? 我错过了什么吗?

属性在默认情况下是final的,也就是说,除非明确地提供open修饰符,否则它们不能被覆盖。