Зачем делать поле приватным а затем создавать для него геттер и сеттер?
Для безопасности, чтобы никто не мог просто так поменять переменную.
Для того, чтобы другой программист, который будет пользоваться этим кодом, не смог выстрелить себе в ногу.
Для валидации, да.
Да и вообще, это хорошая практика.
Опять же, иногда чтобы установить значение в свойство объекта, нужно произвести с входным значением ряд манипуляций, иногда нужно возбуждать события. А где это сделать удобно как не в сеттере?