Tag: 能见度

Kotlin内部可见性修改器的范围

我有一个理解内部访问修饰符的问题。 在我的例子中,我不能产生任何与公众不同的情况。 即使我创建了一个jar子,我也可以从jar子外部(从与jar子中使用的不相关的其他包装中)访问jar子内部的function。 在文档中使用术语模块,但我无法找出模块是什么。 我的问题是: kotlin中的模块是什么? 访问修饰符内部与公共修饰符有什么不同?

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

如果我们有一个class级: class Customer(val customerName: String) { } 它的构造参数customerName可以通过getCustomerName()来访问(因为它也是一个属性)。 如果我们想限制访问这个属性,我们应该声明它是private 。 由于在很多情况下来自Java世界(如果一个类不打算成为数据类),从构造函数参数中分配的字段是用于私人/保护使用,感觉就像在Kotlin中明确声明它们是private的。 另外,Kotlin类是默认的最终的,所以为什么不遵循这个原则的属性? 我错过了什么吗?

包在kotlin保护替代

在java中,我们使用了package的protected(默认)修饰符,它允许在一个包中包含许多类,但是只暴露很少的类并保持逻辑封装。 与kotlin似乎并非如此,如果我想有几个其他类应该是彼此可见,但不能进一步我不得不使用私人修改,这限制了一个文件的可见性…所以基本上,如果你有10在一个包中的类,只有其中的一个是公开的,现在你将拥有一个包含所有类的庞大文件(并且在整个地方都是private的)。 这是正常的做法还是有一种方法来实现kotlin中的一些类似的模块化? 我不明白他们是否有包的概念为什么他们摆脱包保护访问…