В то же время, в языках поддерживающих замыкания, инкапсуляция рассматривается как понятие не присущее исключительно объектно-ориентированному программированию. Также, реализации абстрактных типов данных (например, модули) предлагают схожую модель инкапсуляции.
Область применения
Сокрытие реализации целесообразно применять в следующих целях:
При необходимости максимальной локализации предстоящих изменений, когда изменяется только работа объекта, а не программы;
При необходимости предсказания предстоящих изменений и их последствий;
Необходимость очистки глобальной области видимости.
class A
{public:int a, b;//данные открытого интерфейсаint ReturnSomething();//метод открытого интерфейсаprivate:int Aa, Ab;//скрытые данныеvoid DoSomething();//скрытый метод};
Класс А инкапсулирует свойства Aa, Ab и метод DoSomething, представляя внешний интерфейс ReturnSomething, a, b.