Вот краткие определения инкапсуляции и абстракции.
Абстракт:
Процесс абстракции в Java используется для скрытия определенных деталей и только показать существенные особенности объекта. Другими словами, он имеет дело с внешним видом объекта (интерфейса). Единственный хороший пример, который я вижу для этого на разных сайтах, - это интерфейс.
Инкапсуляция:
В основном это касается скрытия состояния объекта с помощью модификаторы, такие как частные, публичные, защищенные и т.д., мы публикуем состояние через публичные методы, только если требуется.
То, что мы достигаем с помощью таких модификаторов, как private
, public
, также скрывает ненужные детали из внешнего мира, который является не чем иным, как концепцией абстракции
Итак, из приведенного выше объяснения видно, что инкапсуляция является частью абстракции, или мы можем сказать, что это подмножество абстракции. Но почему тогда термин инкапсуляции изобретается, когда мы можем заниматься только абстракцией? Я уверен, что должно быть какое-то существенное различие, которое их отличает, но большая часть материала в сети говорит почти одинаково для обоих.
Хотя этот вопрос был поднят и на этом форуме ранее, но я отправляю его снова с определенными сомнениями. В некоторых ответах также говорится, что абстракция - это концепция, а инкапсуляция - это реализация. Но я не покупаю это - если это правда, то я могу подумать, что эти две разные концепции предоставлены, чтобы запутать нас.
Обновление:. Через 5 лет я придумал свой собственный ответ, который является основанием на основе ответов в этом сообщении и ниже