Вот в чем дело.
Хотя публичные переменные могут быть полезны в некоторых случаях, часто лучше сохранять их закрытыми.
Легко сохранить ваш код организованным, если объект является единственнымодин с контролем над его переменной.
Представьте, что вы хотите поддерживать высоту в диапазоне от 0 до 200. Если у вас есть метод установки высоты, вы можете легко это контролировать.
Например,(Я буду использовать Java для повышения скорости):
public void setHeight(int newHeight)
{
if (newHeight < 0)
height = 0;
else if (newHeight > 200)
height = 200;
else
height = newHeight
}
Как видите, этот подход очень структурирован и контролируется.
Теперь представьте, что у нас есть строка кода, котораяредактирует эту высоту внешне, потому что вы решили сделать ее общедоступной.Если вы не управляете им вне кода, вы можете получить высоту, которая плохо работает с вашей программой.Даже если вы действительно хотели бы управлять им, вы бы повторяли код.
Очень простой пример, но я думаю, что он все понял.