What is the exact use?
Java as many others OOP languages allows you the overloading, this is not other than giving you the freedom to define many Methods/Constructors using different parameters, so you can in a very flexible way construct or prepare the objects depending of what the user gives for input/ what the user needs...
sometime it will be just calling internally methods inside, hiding to the user how the magic inside the objects works...
Example
check how a use can construct an Apple by doing something like
Apple ap = new Apple(1);
but maybe the user doesnt need/want to pass the count immediately
so he can use
Apple ap2 = new Apple();
the trick is inside in the default constructor(constructor with no params)
because as you see that constructor is calling himself and initializing the apple, but with count=0
;
int count;
public Apple()
{
this(0);
}
private Apple(int count)
{
this.count = count;
}