Классы, объекты, интерфейсы, конструкторы, функции, свойства и их setter-ы могут иметь модификаторы доступа. Getter свойства имеет такой же уровень доступа как и само свойство.
В языке Kotlin 4 модификатора доступа: private, protected, internal и public. По умолчанию используется уровень доступа public.
- Private – делает объект доступным как для чтения так и для записи только внутри класса, из других классов получить доступ к private объектам класса недопустимо. Это самый закрытый модификатор доступа.
- Protected – делает объект доступным также для наследуемых классов, но из других классов также получить доступ недопустимо. В процессе наследования наследуемый класс должен быть объявлен open, иначе он будет final и компилятор в данном случае предотвращает наследование класса.
- Internal – делает объект доступным во всём модуле.
- Public – самый открытый модификатор доступа, делает объекты доступными из любого класса.
Модификаторы доступа нельзя использовать в локальных переменных. Локальные переменные – переменные, объявляемые внутри блоков функций, if, when, for и т.д. Подробнее посмотрите в пункте область видимости.