Java encapsulation:



This content originally appeared on DEV Community and was authored by Sundar Joseph

Encapsulation in Java is a core object-oriented programming (OOP) concept that involves bundling data (variables) and the methods that operate on that data into a single unit, typically a class. It is primarily used to achieve data hiding and control access to the internal state of an object.

Here’s how it’s typically implemented:

Declaring fields as private:

The data members (instance variables) of a class are declared with the private access modifier. This prevents direct external access to these variables from outside the class, safeguarding their integrity.
Providing public getter and setter methods:
Public methods, known as “getter” and “setter” methods, are provided to allow controlled access to the private data.
Getter methods: (e.g., getName(), getAge()) are used to retrieve the values of the private fields.
Setter methods: (e.g., setName(String name), setAge(int age)) are used to modify the values of the private fields. These methods can include validation logic to ensure data consistency and prevent invalid values from being assigned.

Benefits of Encapsulation:

Data Hiding:
Protects the internal state of an object from unauthorized or accidental modification by external code.
Modularity and Flexibility:
Allows for changes to the internal implementation of a class without affecting external code that uses the class, as long as the public interface (getter/setter methods) remains consistent.
Improved Maintainability:
Centralizes the logic for accessing and modifying data within the class itself, making the code easier to understand, debug, and maintain.
Enhanced Security:
Provides a controlled mechanism for data access, allowing for validation and error handling before data is modified.

example :

public class Person {
private String name; // Private field
private int age; // Private field

// Public getter for name
public String getName() {
    return name;
}

// Public setter for name
public void setName(String name) {
    this.name = name;
}

// Public getter for age
public int getAge() {
    return age;
}

// Public setter for age with validation
public void setAge(int age) {
    if (age > 0) { // Basic validation
        this.age = age;
    } else {
        System.out.println("Age must be positive.");
    }
}

}


This content originally appeared on DEV Community and was authored by Sundar Joseph