Инкапсуляция – это способ организации данных и методов в единую конструкцию за счет запрета доступа к данным иными способами, кроме заданных. Таким образом, инкапсуляция гарантирует целостность данных, содержащихся в объекте.
Разные языки программирования по-разному интерпретируют инкапсуляцию. Здесь мы расскажем о том, что представляет собой механизм инкапсуляции в языке программирования Java. Пользователю определенного класса не нужно знать, каким образом структурированы данные в объекте. Не давая пользователю возможность изменения атрибутов и ограничивая возможности пользователя до использования определенных функций с целью их изменения (речь идет об интерфейсах), достигается целостность данных (например, это дает уверенность в том, что указанный тип данных соответствует ожиданиям или будет возвращен в пределах ожидаемого интервала времени).
Инкапсуляция определяет уровни доступа для элементов этого класса. Эти уровни доступа определяют права доступа к данным, позволяя нам осуществлять доступ к данным с помощью метода этого класса, из наследуемого класса, или даже из любого другого класса. Существуют три уровня доступа:
Public: функции всех классов могут обращаться к данным или методам класса, который создан с уровнем доступа public. Это самый низкий уровень защиты данных;
Protected: доступ к данным ограничен до функций классов наследников, то есть, то есть функций этого класса и всех подклассов;
Private: доступ к данным ограничен до методов только данного класса. Это самый высокий уровень защиты данных.