Суть геттеров/сеттеров - в создани буфера, который защитит объекты от грубого вмешательства во внутреннюю структуру. Вы как бы создаете свой API для пользования объектом и гарантируете, что если пользоваться им - все пройдет хорошо. Вы заранее планируете свойства переменных и защищаете их от излишнего вмешательства.
В большинстве примеров из реальной жизни - это все лишнее. Подобный уровень проектирования начинает обретать смысл - тогда когда вам понадобится разработать какое-то очень серьезное, отказоустойчивое приложение. Приложение которое будет бросать четкие и понятные ошибки, если будешь пользоваться им неправильно.
Какие проблемы можно предотвратить?
- запись в переменную другого типа данных
- перезапись константы
- затирание/перезапись метода
- чтение не обработанных данных напрямую
- чтения данных без разрешения
- и т.д.