Abstract
Method signature
- The name of the constructor must be the same as the name of the class
- Constructors do not have a return type, not even
void- Constructors can have access modifiers
Calling superclass's constructor
super(..)must be the first line inside the subclass’s constructor. This means that if your call tosuper(..)requires a computed value, the value must be computed inline as arguments tosuper(..).
Java Default Constructor
- Java’s default constructor is called implicitly when you don’t define any constructors in your class.
Properties
- Doesn’t set any fields
- Calls the super constructor, the default super constructor
Chaining Constructors
// Without chaining constructors
class Circle {
public Circle(Point c, double r) {
this.c = c;
this.r = r;
}
// Overloaded constructor
public Circle() {
this.c = new Point(0, 0);
this.r = 1;
}
}
// Chaining constructors
class Circle {
public Circle(Point c, double r) {
this.c = c;
this.r = r;
}
// Overloaded constructor with a call to this(..)
public Circle() {
this(new Point(0, 0), 1);
}
}- Instead of maintaining two separate constructors,
Circle(Point c, double r)andCircle(), we only need to maintainCircle(Point c, double r). This is achieved by chaining the implementation ofCircle()toCircle(Point c, double r)usingthis(new Point(0, 0), 1).
this()The call to
this(..)(if used) must be the first line in the constructor.You can’t have both
super(..)andthis(..)in the same constructor.If you use
this(..), the default constructor isn’t automatically added.
