Abstraction and Encapsulation both are basic object oriented programming (OOP) concepts which allow you to implement real-world objects into programs and codes. While both go hand in hand, they are very different from each other. While every method is an encapsulation, it’s also an abstraction. In simple terms, when you put different things together to create an entity, you actually create a concept – an abstract. While both are technically inseparable, they have got literally nothing in common. It’s almost true that every encapsulation is an abstraction because they both hide something, however, they have their fair share of differences.
What is Abstraction?
Abstraction is a basic OOP concept which focuses on just the relevant data of an object and hides all the irrelevant details which may or may not be for generic or specialized behavior. It hides the background details and emphasizes on the essential points to reduce complexity and increase efficiency. Basically, abstraction is a programming tool to manage complexity. Abstraction focuses on ideas rather than events. It hides the details on the design level by providing functionality to the users. The resulting object can also be called an abstraction. The programmer makes sure the named entity will have all the essential aspects included and none of the irrelevant ones.
Let’s take a real-world example of abstraction. Let’s consider the case of a vehicle, which in this case is your vehicle. A mechanic tries to repair your car or let’s say a specific part of your car. Here, you are the user and you don’t want to get into the specifics of your car or what part actually broke. You don’t actually care about those things; you just want your vehicle back in its original condition without worrying about the details. So, you actually told the mechanic what you want by segregating the implementation part. This is abstraction. You focused on the most essential thing, which is getting your car fixed, rather than focusing on the specifics.
What is Encapsulation?
Encapsulation is yet another OOP concept which binds data and functions into a single component while restricting access to some components. It’s one of the main fundamental concepts of OOP which wraps data and information under a single unit. In technical terms, encapsulation means hiding attributes to shield variables from outside access so that change in one part of an application won’t affect the other parts. On the contrary, by making the information more open you’ll risk misuse of data. It provides basic integrity to the data by protecting it from the outside world. In simple terms, it hides the extra details from the outside world.
Let’s take an example of a Bluetooth mouse. You only need to know about the device’s behavior without worrying about the implementation details like what kind of sensors the mouse has, is it wireless or not, etc. Every single detail describes the mouse but regardless of the details, it’s just a mouse. You just need an interface to use the mouse, which in this case is the mouse pointer. This is encapsulation.
Difference between Abstraction and Encapsulation
While both are fundamental concepts related to OOP and they are technically inseparable, they still have their differences in many aspects.
- Differences in “ Definition” of Abstraction and Encapsulation – Abstraction is a fundamental OOP concept which emphasizes on all the essential aspects of an object by hiding the irrelevant details to increase efficiency and eliminate complexity. Encapsulation, on the other hand, is a data hiding mechanism which wraps the data and information in a capsule to restrict access from outside world.
- Differences in “Functionality” of Abstraction and Encapsulation– Abstraction is a data hiding mechanism which highlights only the essential features to make complex programs simpler, while encapsulation, on the other hand, is a method of binding data and codes into a single entity. The idea is to shield the implementation details from external access.
- Differences in “Implementation” of Abstraction and Encapsulation – Abstraction is implemented using abstract class and interface, while encapsulation is implemented using access modifiers. Five types of modifiers are used to encapsulate data: Private, Public, Internal, Protected, and Protected Internal.
- Differences in “Concept” of Abstraction and Encapsulation– The idea behind abstraction is to focus on what rather than how. Encapsulation hides the internal mechanics of how. For example, when you drive a car, you know exactly what the brake pedal does but you may not know the whole mechanism behind it because the data is encapsulated.
- Differences in “Example” of Abstraction and Encapsulation – Let’s take an example of a smartphone. You know what it does but you may not know how it does what it does. You only care about the display screen and keypad buttons rather than worrying about its inner circuitry. Here, smartphone is an abstract where the inner implementation details are encapsulated.
Abstraction vs. Encapsulation with the comparison table
Abstraction | Encapsulation |
It deals with only the relevant details by hiding the irrelevant ones to reduce complexity thereby increasing efficiency. | It binds the data and information together into a single entity to protect the data from external sources. |
It refers to the idea of hiding data which is not required for presentation purposes. | It hides the data and code in order to restrict unwanted access. |
It focuses on what rather than how. | It hides the internal mechanics of how it does something. |
It hides the unnecessary details on the design level. | It also hides the details but on the implementation level. |
Information and data is separated from the relevant data. | Information is hidden inside a capsule for close access. |
It deals with ideas rather than events. | The idea is to protect the data from outside world. |
It’s implemented using abstract class and interface. | It’s implemented using protected, private, and package-private access modifiers. |
Summary
While both are OOP concepts related to data hiding, they are quite different from each other. Abstraction also relates to hiding like encapsulation, but while the former hides complexity, the latter keeps the data it encapsulates by controlling access to them. Abstraction refers to the concept of representing only the necessary features by hiding the irrelevant details to reduce complexity of an application thereby increasing efficiency. Encapsulation, on the other hand, refers to the concept of hiding all the internal mechanics of a program in order to shield the information from unwanted access. It binds the data and information together into a single component by restricting access to other components.