The classes can provide one or more constructors to initialize a new object of that type.
We can recognize a class’s constructors because they have the same name as the class and have no return type.
Here are the declarations for Rectangle’s constructors:
public Rectangle(Point p)
public Rectangle(int w, int h)
public Rectangle(Point p, int w, int h)
If a class has multiple constructors, they all have the same name but a different number of arguments or different typed arguments.
The compiler differentiates the constructors, and knows which one to call, depending on the arguments.
Objects give us two ways to do these things:
1. Manipulate or inspect its variables.
2. Call its methods.
Java provides an access control mechanism whereby classes can restrict or allow access to its variables and methods.
A class should protect variables against direct manipulation by other objects if those manipulations could endanger the object’s state. State changes should then be affected and therefore controlled by method calls.