Ось короткі визначення інкапсуляції та абстракції.
Абстракція:
Процес абстрагування на Java використовується для приховування певних деталей і лише відображення істотних особливостей об'єкта. Іншими словами, він стосується зовнішнього вигляду об'єкта (інтерфейсу). Єдиний хороший приклад, який я бачу для цього на різних сайтах, - це інтерфейс.
Інкапсуляція:
В основному це стосується приховування стану об'єкта за допомогою модифікаторів, таких як приватні, громадські, захищені тощо.
Те, що ми досягаємо за допомогою модифікаторів private, publicтакож приховує непотрібні деталі із зовнішнього світу, що є не що інше, як концепція абстракції
Отже, зверху пояснення виглядає як інкапсуляція є частиною абстракції, або можна сказати, що це підмножина абстракції. Але чому тоді придуманий термін інкапсуляції, коли ми можемо мати справу лише з абстракцією? Я впевнений, що має бути якась основна відмінність, яка їх відрізняє, але більшість матеріалів у мережі говорить майже те саме для обох.
Хоча це питання було порушено на цьому форумі і раніше, але я його знову публікую з конкретними сумнівами. Деякі відповіді також говорять, що абстракція - це концепція, а інкапсуляція - це реалізація. Але я не купую цього - якщо це правда, то я можу подумати, що ці дві різні концепції надають, щоб нас бентежити.
Оновлення: - Через 5 років я придумав власну відповідь, яка є суть, заснована на відповідях у цій публікації та нижче.
private public, оскільки вони надають лише інформацію / приховування даних, які ми це робимо, оскільки це хороша практика захисту даних екземпляра.
An 'abstraction' (noun) is a concept that acts as a super-categorical noun for all subordinate concepts, and connects any related concepts as a group, field, or category.