Table of Contents
Introduction
Abstraction is among the core concepts of Object-Oriented Programming. It explains a model to build an application component. Implementing [Abstraction] is conditioned on the language-specific features & processes.
What is Abstraction?
It is the course of blanketing the inside particulars of an application from the outer world. Abstraction is to describe things in simple terms. It creates a boundary between the application and the client programs.
Abstraction in OOP:
An object comprises some properties & methods. One can hide them from the outer world through access modifiers and provide access only to the other programs’ required functions and properties. Thus, this is the general procedure to implement [Abstraction] in OOPS.
Abstraction in Java:
Abstraction in Java is a process of concealing the implementation details from the user & displaying only the functionality to the user. One can achieve this by using abstract classes, methods, and interfaces. An Abstract class cannot instantiate independently, and therefore, inheritance is taken by concrete classes.
Different Types of Abstraction:
There are two types of Abstraction: Data & Process
- Data: When the object data is not evident to the outer world, it creates data abstraction. Additionally, If needed, access to the Objects’ data is provided through some methods.
- Process: One doesn’t need to provide details about an object’s functions. Hiding the internal implementation of the different procedures involved in a user operation creates the process of Abstraction.
Abstraction in Real Life:
[Abstraction] is present in almost all real-life machines. A car is an excellent example of this. Turn on a vehicle by inserting the key or pressing the start button. One doesn’t need to know how the engine is getting started and what components your vehicle has. The user will be entirely unaware of the car’s internal implementation & compound logic.
Conclusion:
Lastly, [Abstraction] is a powerful tool that permits us to simplify complex systems and make them more manageable. It is the process of hiding unnecessary details & focusing on the essential aspects of a system. It is helpful in many fields, including computer science, mathematics, engineering, and philosophy.
There are also some potential drawbacks to it. Firstly, it can make systems more difficult to debug. When we abstract away details, it can be more challenging to track down the source of a problem. Secondly, it can lead to performance overhead. The extra layer can add some overhead to the system, reducing performance slightly.