[Interview Question] Can Constructors be Overloaded in Java?


The one word answer to this question is "yes!" constructors in java can be overloaded.

Let us see this by a code example:

public class Employee {
    
    private int empId;
    private String empName;
    private int empAge;

    public Employee(int empId) {
        this.empId = empId;
    }

    public Employee(String empName) {
        this.empName = empName;
    }

    public Employee(int empId, String empName, int empAge) {
        this.empId = empId;
        this.empName = empName;
        this.empAge = empAge;
    }

    public Employee() {
        //default constructor
    }

    public static void main(String[] args) {

        //default constructor call
        Employee employee = new Employee();

        //overloaded constructor calls
        Employee employee1 = new Employee(1);
        Employee employee2 = new Employee("Sam");
        Employee employee3 = new Employee(1,"Sam",22);
    }

}

As you may see we have defined multiple constructors, in the above code. Note there are some rules that you should remember, as they may come up as follow-up questions in the interview.


Some Rules to remember:

  • Overloaded constructors must have different parameters.
  • Each overloaded constructor should have a unique signature.
  • If a constructor is defined by you, Java does not provide a default constructor, you have to explicitly add it by yourself.
  • The order of constructor definition does not matter.
  • Constructors are invoked based on argument types or the number of arguments during object creation.
  • Constructors can call other constructors using this() for chaining.
  • Constructor overloading is specific to object creation, while method overloading involves multiple methods in a class do not get confused.
Constructors be Overloaded in Java

Facing issues? Have Questions? Post them here! I am happy to answer!

Author Info:

Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.

Follow him on: X

You can also reach out to him via e-mail: rakesh@code2care.org

Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap