[java] Why use getters and setters/accessors?

We use getters and setters:

  • for reusability
  • to perform validation in later stages of programming

Getter and setter methods are public interfaces to access private class members.


Encapsulation mantra

The encapsulation mantra is to make fields private and methods public.

Getter Methods: We can get access to private variables.

Setter Methods: We can modify private fields.

Even though the getter and setter methods do not add new functionality, we can change our mind come back later to make that method

  • better;
  • safer; and
  • faster.

Anywhere a value can be used, a method that returns that value can be added. Instead of:

int x = 1000 - 500

use

int x = 1000 - class_name.getValue();

In layman's terms

Representation of "Person" class

Suppose we need to store the details of this Person. This Person has the fields name, age and sex. Doing this involves creating methods for name, age and sex. Now if we need create another person, it becomes necessary to create the methods for name, age, sex all over again.

Instead of doing this, we can create a bean class(Person) with getter and setter methods. So tomorrow we can just create objects of this Bean class(Person class) whenever we need to add a new person (see the figure). Thus we are reusing the fields and methods of bean class, which is much better.

Examples related to java

Under what circumstances can I call findViewById with an Options Menu / Action Bar item? How much should a function trust another function How to implement a simple scenario the OO way Two constructors How do I get some variable from another class in Java? this in equals method How to split a string in two and store it in a field How to do perspective fixing? String index out of range: 4 My eclipse won't open, i download the bundle pack it keeps saying error log

Examples related to oop

How to implement a simple scenario the OO way When to use 'raise NotImplementedError'? PHP: cannot declare class because the name is already in use Python class input argument Call an overridden method from super class in typescript Typescript: How to extend two classes? What's the difference between abstraction and encapsulation? An object reference is required to access a non-static member Java Multiple Inheritance Why not inherit from List<T>?

Examples related to setter

Looking for a short & simple example of getters/setters in C# Set and Get Methods in java? How do getters and setters work? Why use getters and setters/accessors? Getters \ setters for dummies What is the best way to give a C# auto-property an initial value? How can we generate getters and setters in Visual Studio?

Examples related to getter

Looking for a short & simple example of getters/setters in C# Set and Get Methods in java? View's getWidth() and getHeight() returns 0 Best way of invoking getter by reflection How do getters and setters work? Why use getters and setters/accessors? Getters \ setters for dummies What is the best way to give a C# auto-property an initial value? How can we generate getters and setters in Visual Studio?

Examples related to abstraction

What's the difference between abstraction and encapsulation? How abstraction and encapsulation differ? Simple way to understand Encapsulation and Abstraction Difference between Encapsulation and Abstraction Why use getters and setters/accessors? Difference between abstraction and encapsulation? Abstraction VS Information Hiding VS Encapsulation