Scala обладает гораздо большей гибкостью в выборе видимости чего-либо, чем Java, хотя некоторые правила видимости Java, связанные с вложенными классами, не переводятся в Scala.
И, да, в Scala есть пакетный приват. Это написано как private[package]
в Scala.
Причина, по которой Scala устанавливает значение public
по умолчанию, заключается в том, что он используется чаще всего. «Дополнительная типизация» - это на самом деле меньше наборов, потому что гораздо реже делать членов закрытыми или защищенными.
Единственным исключением из этого правила в Java являются поля, которые должны быть приватными, чтобы можно было изменять детали реализации, не нарушая клиентов. Одним практическим следствием этого являются классы с полями, а затем методы получения и установки для каждого поля.
В Scala, поскольку можно заменить val
или var
на def
, в этом нет необходимости.