Data Abstraction :
The extent to which a module hides its internal data and other implementation details from the other modules is the most important factor that distinguishes a well-designed Object-Oriented module from other modules.
A well-designed module hides all of its implementation details and cleanly separates its interface from its implementation. These modules then communicate with each other only through the interfaces. This concept is supported with the help of Abstraction in Java.
The meaning of the word “Abstraction”, in general words, is the process of working with ideas rather than their implementation.
For example, consider the example of an email, the user does not know about the complex details such as what happens just after sending an email, which protocol is used by the server to send the message.
Therefore, we just need to mention the address of the receiver, type the content and click the send button.
This is basically called Abstraction in which the complex details are being hidden from the users.
Similarly, in Object-oriented programming, abstraction is a process of providing functionality to the users by hiding its implementation details from them. In other words, the user will have just the knowledge of what an entity is doing instead of its internal working.