Nope—we can’t override a constructor in Java. Here’s why:
🚫 Why Constructors Can’t Be Overridden
- Constructors are not inherited.
Since constructors belong specifically to the class they’re defined in and don’t get passed down to subclasses, there’s nothing to override. - Their purpose is class-specific.
They’re used to initialize objects of a particular class, and each class defines its own way of doing that.
🤔 But You Can Do This Instead:
- Constructor Overloading:
You can have multiple constructors in the same class with different parameter lists:
class Student {
Student() {
System.out.println("Default constructor");
}
Student(String name) {
System.out.println("Student name: " + name);
}
}
- Super Constructor Call:
A subclass can call a superclass constructor usingsuper()
—which lets you reuse initialization logic:
class Person {
Person(String name) {
System.out.println("Person: " + name);
}
}
class Employee extends Person {
Employee(String name) {
super(name); // Calls Person's constructor
}
}
So, you can extend, overload, or invoke a constructor from a parent class—but not override it.