

Рассмотрим инкапсуляцию из реальной жизни на примере телевизора. Под корпусом спрятана вся его реализация (блок питания, инвертор, основная плата и т.д.). Причем реализация каждой из составляющих также скрыта от остальных частей. На корпусе телевизора имеются кнопки включения/выключения, настроек, переключения каналов – это интерфейс телевизора, через который мы с ним взаимодействуем. Нам не нужно задумываться как реализованы поиск и настройка каналов, когда мы хотим переключиться на другой канал. Если не было бы корпуса (отсутствовала инкапсуляция), мы бы могли случайно испортить телевизор (пролить на него воду, например), или он дернул бы нас током, таким образом навредив нам.
В промышленности есть такое понятие как «взаимозаменяемость». В ООП инкапсуляция обеспечивает такую взаимозаменяемость. Инкапсуляция заставляет разделять программу на логические модули. Любой модуль в таких условиях можно заменить другим модулем: это и есть «взаимозаменяемость».
Когда мы играем, скажем, на Play Station, то сама приставка не знает (и ей всё равно) как устроен телевизор, а телевизор, в свою очередь, не знает как устроена приставка. Они взаимодействуют друг с другом посредством кабелей и разъемов (интерфейс). Если сломался телевизор, мы купили новый, не важно какой фирмы, с какой диагональю, плазменный или на светодиодах. Главное, чтобы он имел необходимый разъем. Как будет собран новый телевизор – приставке это не важно. И телевизору будет всё равно, если мы захотим сменить Play Station на XBox.
Инкапсуляция в Java обеспечивается модификаторами доступа public, private, protected, default.