Encapsulation in Java: A step ahead
In the object-oriented world, we have pillars of programming one of them is Encapsulation the other three are Inheritance, Polymorphism, and Abstraction.
Here's the article which will explain, What, Why, and How of Encapsulation, and the other three are yet to be released one by one. So let’s get started with encapsulation.
Introduction
According to most of the resources, encapsulation means hiding the data members (variables and methods) within the class or a mechanism of wrapping/hiding a code and the variables/methods together as a unit.
In this, we will come across the entire concept of what encapsulation means, why to use encapsulation and how to achieve encapsulation in the programming world.
Data Hiding Vs Encapsulation
When encapsulation is implemented, only the variables inside the class can access it.
Therefore known as data hiding. But encapsulation and data hiding both are different from each other.
Data Hiding means protecting the members of a class from unauthorized/illegal access.
Encapsulation automatically achieves the concept of data hiding by providing security to data by making the variables private.
As it is difficult to understand encapsulation through definitions we will learn in deep about this through some code examples,
Here the common behavior and characteristics of an employee are enclosed in a single unit, the Employee.java class this is a process of encapsulation.
An Employee object exposes its behavior and characteristics to the outside world.
Here encapsulation hides implementation details of the Employee class. Similarly creating an interface is also a process of encapsulation.
How to achieve encapsulation?
Encapsulation is implemented in java using interfaces, class, access modifiers, setters and getters.
A Class/Interface will encapsulate essential features of an object.
Access Modifiers such as private, public, protected restrict access to data at different levels.
Setter/Getter methods prevent data from misuse or unwanted changes.
For achieving encapsulation in java we declare the variable of a class as private. Private data members are used because they are only accessible within the class. It can’t be accessed using outside the class, the only way to access it is to use setter/getter methods.
Let’s modify the Employee. class to prevent the member variables name, age, and address from being modified by other objects.
Here’s the field name, age, and address that can be changed only in the Employee. class. If someone attempts to make a change like shown below, then code will not be compiled as the field is marked as private.
But what if we want to modify/view the attributes values in a safer manner, then we use getter/setter methods. Creating a setter for field age,
Here, one can change the age of the Employee object and set it to a valid range. Likewise, with the name field associated with an Employee object, one can change the details but can’t enter null or empty values as the setter will throw an exception.
This protest data from unauthorized access or malicious changes, for example:
Till now we have learned what is encapsulation in java but the question arises of how to achieve encapsulation and the need to ensure encapsulation. Before moving forward to know how to achieve first we should know about what getter/ setter methods meant.
To get the code written in this article check here to my GitHub repository for the same.
Github Link: https://github.com/AmanMRT/OOPS-Concepts/tree/main/Encapsulation
Getter and Setter Methods
TO ensure encapsulation, we make the data member variables of the class private. Now private members are only accessible within the class It can’t be accessed outside the class as they restrict access to data.
So without much theory, we start with some code as it's easy to understand what this means.
OUTPUT
The above program has an Employee class with its three private member variables and their getters/setters respectively to understand the concept behind encapsulation and data hiding.
Why is encapsulation needed?
These are the reasons why we need encapsulation in everyday programming that increases the reusability, the flexibility of the code.
Some other reasons are mentioned below,
Objects encapsulate data and implementation details.
The functionality of the program is defined in one place.
Data inside our object is not modified unexpectedly by external code.
Encapsulation allows us to modify code without changing other code and controls how we access data.
Conclusion
So what we conclude from this article is summarized below.
Class is a base of encapsulation and is used to bind the data(variables) with its related functionalities(methods). With encapsulation, we can restrict access to critical data members which improves security.
We have hidden the data members (variables and methods) inside a class and have also specified the access modifiers so that they are not accessible to the outside world.
Summary
Thus, coming towards the end of this article, we had learned about encapsulation in Java.
What did we learn?
What is encapsulation?
Data Hiding Vs Encapsulation.
How to achieve encapsulation?
Getter and Setter Methods
Why is encapsulation needed?
To get the code written in this article check here to my Github repository for the same.
Github Link: https://github.com/AmanMRT/OOPS-Concepts/tree/main/Encapsulation
- Singleton Design Pattern here.
- Factory Design Pattern here.
- Builder Design Pattern here.
- Bridge Design Pattern here.
- The static keyword here.

Gopi ChandPosted May 5, 2014, 12:10 PM
It's my job to share better articles..thanks for your appreciation.
Sanjay SinghPosted May 5, 2014, 11:37 AM
very nice article sir... thanks for sharing