Найти тему
KOTLIN_IT

Урок №68 по Котлин. Сеттеры

get()/set() — специальные функции, которые отвечают за считывание и установку значения поля. Могут использоваться для настройки доступа к полям

Геттеры (getter) и сеттеры (setter) (еще их называют методами доступа) позволяют управлять доступом к переменной.

Их формальный синтаксис:

-2

Инициализатор, геттер и сеттер свойства необязательны. Указывать тип свойства также необязательно, если он может быть выведен их значения инициализатора или из возвращаемого значения геттера.

Геттеры и сеттеры необязательно определять именно для свойств внутри класса, они могут также применяться к переменным верхнего уровня.

Сеттер

Сеттер определяет логику установки значения переменной. Он определяется с помощью слова set.

Например, у нас есть переменная age, которая хранит возраст пользователя и представляет числовое значение.

-3

Но теоретически мы можем установить любой возраст: 2, 6, -200, 100500. И не все эти значения будут корректными.

Например, у человека не может быть отрицательного возраста.

И для проверки входных значений можно использовать сеттер:

-4

Блок set определяется сразу после свойства, к которому оно относится - в данном случае после свойства age.

При этом блок set фактически представляет собой функцию, которая принимает один параметр - value, через этот параметр передается устанавливаемое значение.

Например, в выражении age = 45 число 45 и будет представлять тот объект, который будет храниться в value.

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

Идентификатор field представляет автоматически генерируемое поле, которое непосредственно хранит значение свойства. То есть свойства фактически представляют надстройку над полями, но напрямую в классе мы не можем определять поля, мы можем работать только со свойствами. Стоит отметить, что к полю через идентификатор field можно обратиться только в геттере или в сеттере, и в каждом конкретном свойстве можно обращаться только к своему полю.

В функции main при втором обращении к сеттеру (age = -345) можно заметить, что значение свойства age не изменилось.

Так как новое значение -345 не входит в диапазон от 0 до 110.

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц