Intereting Posts
Грейд занимает время спереди, казалось бы, ничего не делает Добавление / Query / Parse SQLite с использованием Anko Создание ArrayList уникальных элементов в ArrayList AWS Lambda Java / Kotlin Отправить сообщение для SQS Запуск эспрессо-теста несколько раз Переменная не обновляется после декларации lateinit, неспособная вернуться Устаревший Kotlin Runtime Как добавить контент из url-чтения в arraylist Я сейчас разрабатываю приложение для Android с Kotlin, но произошла ошибка: CompilationException: не удалось встроить метод в 'readText' Когда я должен использовать let {} и когда просто просто! = Null Котлин: Почему я не могу использовать одну из своих функций? Нечетный размер с номером MutableList <Int> в Kotlin возвращает IndexOutOfBoundsException с итератором Ссылка Kotlin Textview id не работает с неанглийскими символами SpringMVC RequestMapping: добавление xml к пути контроллера для ответа xml Android Recycler View Horizontal Прокрутите до последнего элемента и покажите первый элемент

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

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

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

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

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