我读到scala中没有package-private(默认为Java),默认情况下使用公共访问.
这个选择的理由是什么?这是一个很好的做法,因为默认的公共访问使一切都可见,因此是API的一部分?
这意味着要封装字段和方法的额外输入(无论是私有,作用域私有,受保护,访问).
Deb*_*ski 27
在Java中,选择"package-private"作为默认设置要容易得多,因为它只有三种可能性中的一种.
在Scala中,您可以选择公共访问(public),包含私有访问和继承(protected[C]),包 - 私有访问,无继承(private[C]),类 - 私有访问(private),对象 - 私有访问(private[this]),继承访问(protected),protected[this]访问(无论你怎么称呼它,另外,你有一些文件私有访问修饰符(sealed).
除了之外,很难从中选择默认值public.
(考虑到内部方法,还可以在列表中添加方法私有 ...)
尽管与嵌套类相关的一些Java可见性规则无法转换为Scala,但Scala在选择Java的可见性方面具有更大的灵活性.
而且,是的,Scala中有package-private.它写private[package]在Scala中.
Scala之所以成为public默认值,是因为它是最常用的可见性."额外打字"实际上更少打字,因为将会员设为私人或受保护的情况更为罕见.
Java中该规则的一个例外是字段,应该将其设置为私有,以便可以在不破坏客户端的情况下更改实现细节.这样做的一个实际结果是具有字段的类,然后是每个字段的getter和setter.
在Scala中,因为一个人可能能够替换一个val或一个var相应的def,所以这不是必需的.