Как геттеры и сеттеры изменяют свойства в 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Это то, что, как я думал, я хотел предотвратить в первую очередь, сделав его закрытой переменной. Так, какова цель превращения ранее общедоступной переменной в частную, если вы все еще можете косвенно манипулировать ею? И как геттеры и сеттеры вообще работают, чтобы изменить свойства этих переменных? Я пытаюсь понять фундаментальную концепцию, потому что без этого я не понимаю, как и почему используются геттеры и сеттеры.

Ответы на вопрос(2)

Ваш ответ на вопрос