斯卡拉的“public”val构造函数参数
问题描述:
这个声明有什么问题?为什么在给定的代码中不允许使用public
?斯卡拉的“public”val构造函数参数
class Alpha(public val a:Int,public val b:Int)
这似乎是一个愚蠢的问题,但这是由于封装?
答
他们是没有public
关键字在斯卡拉。 Scala中的默认访问修饰符是公共的。在你的情况下,如果你从你的构造函数签名中删除public
,它将公开参数。
//Public
class Alpha(val a: Int, val b: Int){}
//Private
class Alpha(private val a: Int, private val b: Int){}
+0
这有点复杂,比较'C类(x: Int)'和'C类(val x:Int)'。只有'val's和'var's是默认公开的。前者总是定义一个私人领域。 –
+0
准确地说,前面的'class C(x:Int)'没有定义专用字段;它定义了一个构造函数arg,它只能被当前实例访问。 – eques
因为public在Scala中根本不是关键字。事情默认为“公共”。 (这与Java不同!)。 – Jesper
我以为它在那里。因为它在Java中。我希望它会在那里。谢谢 – optional
Scala不是Java,只是因为Java中存在的东西并不意味着它也存在于Scala中。我写了一篇关于Scala访问修饰符的博文:[scala访问修饰符和修饰符的详细内容](http://www.jesperdj.com/2016/01/08/scala-access-modifiers-and-qualifiers-in-detail/) – Jesper