Должны ли свойства класса в Котлине быть частными и как обращаться к ним?

Aloha! Во время чтения справочника языка Kotling я заметил, что ключевое слово «private» для свойств класса никогда не используется (всегда по умолчанию является общедоступным). Он также сказал, что геттеры и сеттеры генерируются автоматически. Поэтому я создал класс и сделал его поля закрытыми. Однако, когда я создаю объект класса, я не могу видеть поля, и никакие сеттеры и геттеры не доступны, если я не напишу их сам. Так в чем же правило? Оставить модификатор видимости default (public) или сделать его приватным и предоставить методы мутатора? Спасибо.

Вся идея свойства заключается в том, что он инкапсулирует поле и его аксессоры в единый объект. Если вам нужно иметь доступ и модифицировать свойство класса извне, вы должны сохранить его публичным. Если вам нужно читать снаружи, но не обновлять его, вы можете определить публичное свойство с помощью частного доступа.

Изменение доступа по умолчанию к пользовательскому не повлияет на клиентов вашего класса, потому что под капотом компилятор всегда будет генерировать методы доступа, а клиенты класса будут использовать эти методы и не будут напрямую обращаться к базовому полю.

Вы никогда не должны писать явные методы getter или mutator, которые отделены от аксессуаров свойств.

Intereting Posts
Котлин, когда делегировать карту? Использование @ Component.Builder с параметрами конструктора Переопределяющая переменная создает NPE, когда переменная используется при инициализации в суперклассе Андроид anko предупреждение пользовательский макет currentFocus Функции расширения Котлина и функции-члены? Как найти поисковую панель на панели инструментов, например google? Kotlin: Как заменить уже открытый фрагмент на новый фрагмент в студии Android? Как создать диаграммы и UML кода Котлина? Вычислить свойство только один раз Учреждения в Котлине Есть ли какая-либо ссылка на временную сложность библиотеки коллекции Kotlin? kapt2 и butterknife производят ошибку lint: ожидаемый ресурс идентификатора типа Создание экземпляра прослушивателя интерфейса в Котлине Почему я не вижу компонент вспомогательного объекта расширенного класса? Объяснение @Configuration @AutoConfigureAfter с Kotlin