Constructors are special methods in Java. They help create objects and set their values. A constructor has the same name as the class. It does not have a return type. Every time you create an object, the constructor runs.
What is Constructor Chaining?
Constructor chaining means calling one constructor from another constructor. It allows code reuse inside the same class or between parent and child classes. This reduces duplication. It also makes object creation more efficient.
In Java, constructor chaining can happen in two ways:
- Within the same class using
this()
. - Between parent and child classes using
super()
.
Why Use Constructor Chaining?
Constructor chaining has many benefits:
- It reduces repeated code.
- It makes constructors simpler.
- It ensures that initialization happens in a proper sequence.
- It improves the readability of the class structure.
Without chaining, you may need to write the same code in many constructors. That is not efficient.
Constructor Chaining within Same Class
Let us see an example. Here, one constructor calls another using this()
.
classStudent {
Stringname;
intage;
// First constructor
Student() {
this(“Unknown”, 0); // Calls second constructor
System.out.println(“Default constructor called”);
}
// Second constructor
Student(Stringname) {
this(name, 18); // Calls third constructor
System.out.println(“Single-argument constructor called”);
}
// Third constructor
Student(Stringname, intage) {
this.name = name;
this.age = age;
System.out.println(“Two-argument constructor called”);
}
}
publicclassTestChaining {
publicstaticvoidmain(String[] args) {
Students1 = newStudent();
Students2 = newStudent(“Ali”);
Students3 = newStudent(“Sara”, 20);
}
}
Output
Two-argument constructor called
Single-argument constructor called
Default constructor called
Two-argument constructor called
Single-argument constructor called
Two-argument constructor called
Explanation
- When
new Student()
is called, it runs the default constructor. - That default constructor calls the second constructor using
this("Unknown", 0)
. - The second constructor then calls the third constructor.
- Finally, all constructors print their messages.
This is constructor chaining inside the same class.
Constructor Chaining between Parent and Child Classes
Chaining can also work between classes. In this case, super()
it is used. It calls the constructor of the parent class.
classPerson {
Stringname;
Person() {
this(“No Name”);
System.out.println(“Parent default constructor called”);
}
Person(Stringname) {
this.name = name;
System.out.println(“Parent parameterized constructor called”);
}
}
classEmployeeextendsPerson {
intsalary;
Employee() {
super(); // Calls parent constructor
this.salary = 0;
System.out.println(“Child default constructor called”);
}
Employee(Stringname, intsalary) {
super(name); // Calls parent constructor with argument
this.salary = salary;
System.out.println(“Child parameterized constructor called”);
}
}
publicclassTestInheritance {
publicstaticvoidmain(String[] args) {
Employeee1 = newEmployee();
Employeee2 = newEmployee(“John”, 50000);
}
}
Output
Parent parameterized constructor called
Parent default constructor called
Child default constructor called
Parent parameterized constructor called
Child parameterized constructor called
Explanation
- The
Employee()
constructor callssuper()
. That triggers the parentPerson
constructor. - Then it initializes the
salary
value. - The second constructor
Employee(String, int)
calls the parent constructor with a name. - After that, it sets the salary.
This shows constructor chaining across parent and child classes.
Rules of Constructor Chaining
There are some important rules to remember:
- A constructor call must be the first statement inside another constructor.
this()
is used for calling another constructor in the same class.super()
is used for calling a parent class constructor.- Only one constructor call (
this()
orsuper()
) is allowed as the first statement. - If you do not use
super()
Java automatically inserts a call to the parent default constructor. - Constructor chaining ensures proper order of initialization.
Example with Real-Life Analogy
Think about a company employee record.
- A person has a name.
- An employee is also a person, but with extra details.
- When creating an employee object, the parent details must be initialized first.
- That is done using constructor chaining.
This ensures the object is complete and consistent.
Advantages of Constructor Chaining
- Code Reuse: No need to repeat the same initialization code.
- Consistency: All constructors eventually call one main constructor.
- Simplicity: Easy to maintain and update.
- Orderly Initialization: Parent class details are set before child class details.
Common Mistakes
- Forgetting that the constructor call must be the first line.
- Creating a loop by calling constructors in a cycle.
- Not defining a default constructor when needed.
- Using
super()
incorrectly without matching parent parameters.
Best Practices
- Always try to have one master constructor with full arguments.
- Use
this()
to direct all other constructors to that master constructor. - In inheritance, call
super()
with required arguments. - Keep initialization code in one place to reduce errors.
Conclusion
Constructor chaining is a powerful concept in Java. It makes constructors clean and reusable. By using this()
and super()
Developers can control how objects are initialized. It prevents code duplication and improves clarity.
Understanding how Constructor Chaining in Java works helps in building better programs. It also makes class design more efficient. Always follow best practices to avoid mistakes and get the full benefit of chaining.

Software Testing Lead providing quality content related to software testing, security testing, agile testing, quality assurance, and beta testing. You can publish your good content on STL.