За умовчанням рівень доступу до членів класу у Scala є загальнодоступним (public).

Відкриття доступу підкласам (protected), так само як у C++ і C# відкриває доступ лише підкласам, на відмініу від Java, в якій protected також дає доступ усім класам того самого пакету. Члени з видімістю protected доступні у інших екземплярах цього ж класу, але нащадки не мають доступу до protected членів інших екземплярів своїх базових класів (так само як і в Java).

Члени з видімістю private доступні лише у екземплярах цього ж класу. У Java private обмежує доступ на рівні класу найвищого рівня вкладеності, тобто зовнішній клас може одержати доступ до private члена внутрішнього вкладеного класу[1], що не дозволяє Scala.

У Scala protected і private можуть мати кваліфікатор доступу у квадратних дужках: protected[C]. Кваліфікатор доступу члена може бути іменем зовнішньго класу чи пакету, тоді вказаний клас або всі класи, що знаходяться у вказаному пакеті отримують доступ до члена. Також кваліфікатор доступу може бути this, тоді член доступний лише із свого екземпляру, але не доступний через інші екземпляри класу.

Супутні об'єкти (companion objects) мають спільний рівень доступу із своїми супутніми класами.

примітки

ред.