It can be considered as some API design practice, where you provide (excuse the term) but let's say generic constructor having as arguments all class instance variables as you mentioned:
public Apples(String color, int quantity) {
this.color = color;
this.quantity = quantity;
}
Then you implement some additional constructors which may take one or more of this instance variables, where you affect a default value
to non specified variables:
public Apples(String color) {
this(color, 0);
}
Here you are affecting a 0 to the quantity instance variable, which may also be written as below and which is fairly the same as above code (except that you are trying to reuse defined constructor):
public Apples(String color) {
this.color = color;
this.quantity = 0;
}
So that way you are thinking of some, user or colleague that lands down and want to use the snippet you wrote but does not know a lot about default values that classes may take when he is going to instantiate them (this is really showcased in more complex exapmles); but as good designer, you thought of him and provided diversity of constructors
that should ease his stuff.
BR.