Encapsulation in Java

Encapsulation is a fundamental concept in object-oriented programming (OOP). It refers to the bundling of data and methods that operate on that data within a single unit, or object. We can achieve an encapsulation in Java by using the private access modifier for instance variables and exposing these methods using public setter and getter methods.

Advantage of encapsulation

The main advantages of encapsulation are:

  • Data hiding: Encapsulation allows developers to hide the implementation details of a class from the outside world. This is particularly useful for maintaining the integrity of the data stored in an object, as it can prevent external code from modifying the data in unintended ways.
  • Improved security: By hiding the internal workings of a class, encapsulation can help to secure the data within an object from unauthorized access or tampering.
  • Greater flexibility: Encapsulation allows developers to change the implementation of a class without affecting the rest of the codebase. This can make it easier to maintain and extend the codebase over time.

Example of an encapsulation

To implement encapsulation in Java, we can use the private access modifier for instance variables. This means that we can only access these variables within the class in which they are defined. To allow other classes to access these variables, we can define public setter and getter methods.

Below example demonstrates the encapsulation in Java:

public class EncapsulatedClass {
  private String name;
  private int age;
  
  // Setter method for name
  public void setName(String name) {
    this.name = name;
  }
  
  // Getter method for name
  public String getName() {
    return this.name;
  }
  
  // Setter method for age
  public void setAge(int age) {
    this.age = age;
  }
  
  // Getter method for age
  public int getAge() {
    return this.age;
  }
}

In the example above, the instance variables name and age are marked as private, meaning they can only be accessed within the EncapsulatedClass class. To allow other classes to access these variables, the setName and getName methods can be used to set and retrieve the value of the name variable, and the setAge and getAge methods can be used to set and retrieve the value of the age variable.

Conclusion

Encapsulation is a crucial concept in Java and is used to create robust and maintainable code. By using the private access modifier and setter and getter methods, we can protect the data within our objects and provide a clean and flexible interface for interacting with that data.