Aquí están las breves definiciones de encapsulación y abstracción.
Abstracción:
El proceso de abstracción en Java se utiliza para ocultar ciertos detalles y solo muestra las características esenciales del objeto. En otras palabras, se trata de la vista exterior de un objeto (interfaz). El único buen ejemplo que veo para esto en diferentes sitios es la interfaz.
Encapsulación:
Básicamente se trata de ocultar el estado del objeto con la ayuda de modificadores como privado, público, protegido, etc. Exponemos el estado a través de métodos públicos solo si es necesario.
Lo que logramos con modificadores como private, publictambién oculta detalles innecesarios del mundo exterior, que no es más que un concepto de abstracción
Entonces, desde la explicación anterior parece que la encapsulación es parte de la abstracción o podemos decir que es un subconjunto de la abstracción. Pero, ¿por qué se inventa el término de encapsulación cuando podríamos tratarlo solo con abstracción? Estoy seguro de que debería haber alguna diferencia importante que los distinga, pero la mayor parte del material en la red dice casi lo mismo para ambos.
Aunque esta pregunta se ha planteado anteriormente en este foro también, pero la estoy publicando nuevamente con dudas específicas. Algunas respuestas también dicen que la abstracción es un concepto y la encapsulación es la implementación. Pero no compro esto: si es cierto, entonces puedo pensar que estos dos conceptos diferentes se proporcionan para confundirnos.
Actualización: - Después de 5 años, he encontrado mi propia respuesta, que es la esencia basada en las respuestas en esta publicación y las siguientes.
private public, ya que solo proporcionan información / ocultación de datos que lo hacemos porque es una buena práctica proteger los datos de la instancia.
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.