Encapsulation in Java

stacktips avtar

Written by:

Editorial,  6 min read,  updated on December 21, 2023

Encapsulation is the principle of wrapping data inside an object to protect it from unwanted accesses or manipulation. The point of encapsulating the data inside an object is to ensure that the data inside is properly read and written to.

Encapsulation is achieved by setting the data inside a class to private. This makes the fields inaccessible directly from outside the class. Then we define getter and setter methods whose job it is to ensure data is read and written to in a safe and valid way.

Getter Methods

Here is an example showing the usefulness of controlling how data is accessed as well using getter methods:

public class Length {
    private int millimeters;

    public Length(int millimeters) {
        this.millimeters = millimeters;

    public int getMillimeters() {
        return millimeters;

    public int getCentimeters() {
        return millimeters / 100;

    public int getMeters() {
        return millimeters / 1000;

Now instead of having to remember conversions, like this:

Length length = new Length(345964);
int centimeters = length.millimeters / 100;


You can just write the conversion method once, and call it anytime you want, completely skipping direct access of millimeters:

Length length = new Length(345964);
int centimeters = length.getCentimeters();


Setter Methods

Here is an example of encapsulation using a setter method:

public class BankAccount {
    private int balance;

    public int getBalance() {
        return balance;

    public void deposit(int amount) {
        if (amount < 0) {
            // show error
        this.balance += amount;

In this example, our class just has a single field, balance that was set to privateNow, instead of allowing this:

BankAccount account = new BankAccount();
int depositAmount = 5;

account.balance += depositAmount;

Users of this class must use the internal method to manipulate the balance:

BankAccount account = new BankAccount();
int depositAmount = 5;


Using setter methods prevents negative amount deposits from happening:

BankAccount account = new BankAccount();
int depositAmount = -5;

account += depositAmount;

Because we can have additional checks and improved data integrity by forcing all desired changes to use setter methods. This is ultimately the beauty and point of utilizing encapsulation. You can have more control over your data and ensure that only valid operations are performed with it.

Getting Started with Spring Boot: A Beginner's Guide

This course covers the fundamentals of Spring Boot an you will gain the necessary skills to develop various types of applications using the powerful features of the Spring Boot framework.


Continue reading..