Ей же по сути так и так можно задавать любые значения и получать откуда хочешь, или нет?
Это придумали
теоретики ООП много лет назад. Идея была в том чтобы
не иметь возможности
влиять на приватные поля напрямую. Например поле может поменять тип в следующей версии софта
или может появится связное поле которое отражает данное. Чтоб эта логика работала геттер и сеттер
могут содержать какие-то действия. Проверки. Или воздействия на другие переменные объекта.
Это называется "инкапсуляция". Тоесть оболочка объекта это не просто бюрократизм а это
капсула
которая запрещает неправильные или неконсистентные действия с внутренними полями объекта.
Грубо говоря такой объект это не просто тупой
struct/tuple а это некий умный
конечный автомат который
имеет более сложное поведение.