Scala tiene mucha más flexibilidad en la elección de la visibilidad de algo que Java, aunque algunos de reglas de visibilidad Java, relacionado con las clases anidadas no se pueden traducir a Scala.
Y, sí, hay paquetes privados en Scala. Está escrito como private[package]
en Scala.
La razón por la que Scala hace public
es la predeterminada porque es la visibilidad más común utilizada. La "escritura extra" es en realidad menos escribiendo, porque es mucho más raro hacer que los miembros sean privados o estén protegidos.
Una excepción a esa regla en Java son los campos, que deben hacerse privados para que uno pueda cambiar los detalles de la implementación sin romper clientes. Una consecuencia práctica de esto son las clases con campos y luego getters y setters para cada campo.
En Scala, porque uno puede reemplazar un val
o un var
con el def
correspondiente, esto no es necesario.
bien ... realmente leo aquí (http://joelabrahamsson.com/entry/learning-scala-uniform-access-principle) que el compilador inserta un getter para un acceso uniforme.Sin embargo, el acceso es público. – bsr
Para un principio de acceso uniforme, debería bastar con que los niveles de acceso predeterminados para campos y métodos sean iguales, no es necesario que ambos sean 'públicos '. –