Constructors, this() Chaining & Instance Initializers
1Concept
Constructors initialize newly instantiated objects. Constructor chaining with `this(...)` allows one constructor to invoke another constructor in the same class, eliminating duplicated initialization code. Instance Initializer Blocks run before constructors whenever an instance is created.
2Architecture Diagram
Constructor Invocation Order: 1. Superclass Constructor (`super()`) ---> 2. Instance Initializer Block ---> 3. Constructor Body
3Code Example
Core Java
public class ConstructorChainingDemo {
static class DatabaseConnection {
private String host;
private int port;
private int timeoutMs;
// Default Constructor chaining to 2-arg constructor
public DatabaseConnection() {
this("localhost", 5432);
}
// 2-arg Constructor chaining to 3-arg constructor
public DatabaseConnection(String host, int port) {
this(host, port, 5000);
}
// Master parameterized constructor
public DatabaseConnection(String host, int port, int timeoutMs) {
this.host = host;
this.port = port;
this.timeoutMs = timeoutMs;
}
public void display() {
System.out.println("Connected to " + host + ":" + port + " (Timeout: " + timeoutMs + "ms)");
}
}
public static void main(String[] args) {
DatabaseConnection conn = new DatabaseConnection();
conn.display();
}
}4Expected Output
Connected to localhost:5432 (Timeout: 5000ms)
5Key Takeaways
- ✓`this(...)` must be the FIRST statement in a constructor body.
- ✓You cannot call both `this()` and `super()` in the same constructor.
- ✓Recursive constructor chaining causes a compile-time error.