По сути, да, это для того, чтобы люди не совались с вещами.
Инкапсуляция (скрытие информации) - это искомый вами термин.
Публикуя только минимум информациидля внешнего мира вы можете изменять внутренние устройства столько, сколько хотите.
Например, допустим, вы реализуете свою телефонную книгу как массив записей и не скрываете этот факт.
Затем приходит кто-то и пишет код, который ищет или манипулирует вашим массивом без прохождения через ваш «нормальный» интерфейс.Это означает, что когда вы захотите начать использовать связанный список или какую-либо другую более эффективную структуру данных, их код будет поврежден, потому что он использует эту информацию.
И это ваша ошибка для публикацииэта информация, а не их информация об использовании: -)
Классическими примерами являются сеттеры и геттеры.Вы можете подумать, что вы можете просто выставить саму переменную температуры в классе, чтобы пользователь мог просто сделать:
Location here = new Location();
int currTemp = here.temp;
Но что, если вы захотите позже получить эту информацию из Бюро?метеорологии всякий раз, когда вы спрашивали о температуре.Если бы вы сначала инкапсулировали информацию, вызывающая сторона просто сделала бы:
int currTemp = here.getTemp();
, и вы могли бы изменить реализацию этого метода так, как вам хочется.Единственное, что вам нужно сохранить - это API (имя функции, аргументы, тип возвращаемого значения и т. Д.).
Интересно, что дело не только в коде.Некоторые крупные компании будут перенимать свою документацию с такими фразами, как:
Эта техническая информация предназначена только для учебных целей и может измениться в будущих выпусках.
Это позволяет им предоставлять то, чтоклиент хочет (дополнительную информацию), но не привязывает его к поддержке на всю вечность.