Как геттеры и сеттеры изменяют свойства в Dart?
Я борюсь с концепцией геттеров и сеттеров в Dart, и чем больше я читаю, тем больше я не могу понять основную цель. Возьмем для примера следующий код:
main() {
Car car = new Car();
car.doors = 44;
print(car.doors); // 44
}
class Car {
int doors = 4;
}
Позже я решаю сделать «двери» закрытой переменной, поэтому я делаю следующее:
main() {
Car car = new Car();
car.doors = 44;
print(car.doors); // 44
}
class Car {
int _doors = 4;
int get doors => _doors;
set doors(int numberOfDoors) => _doors = numberOfDoors;
}
Согласно кодексу,_doors
теперь является частной переменной, и поэтому я не могу получить к ней доступ в main (). Тем не менее, манипулируяdoors
Я могу косвенно изменить значение_doors
Это то, что, как я думал, я хотел предотвратить в первую очередь, сделав его закрытой переменной. Так, какова цель превращения ранее общедоступной переменной в частную, если вы все еще можете косвенно манипулировать ею? И как геттеры и сеттеры вообще работают, чтобы изменить свойства этих переменных? Я пытаюсь понять фундаментальную концепцию, потому что без этого я не понимаю, как и почему используются геттеры и сеттеры.