In Java it has become a standard practice to use a getter & setter notation to provide a consistent interface to an object’s properties. There is a reason why we don’t do the following in Java:
public String fullName;
The code above essentially creates an interface (or contract) between the class and the implementors of this [...]