Why an interface doesn't have a constructor whereas an abstract class have a constructor in Java?


A Constructor is to initialize the non-static members of a particular class with respect to an object.

Constructor in an Interface

  • An Interface in Java doesn't have a constructor because all data members in interfaces are public static final by default, they are constants (assign the values at the time of declaration).

  • There are no data members in an interface to initialize them through the constructor.

  • In order to call a method, we need an object, since the methods in the interface don’t have a body there is no need for calling the methods in an interface.

  • Since we cannot call the methods in the interface, there is no need of creating an object for an interface and there is no need of having a constructor in it.

Example

interface Addition {
   int add(int i, int j);
}
public class Test implements Addition {
   public int add(int i, int j) {
      int k = i+j;
      return k;
   }
   public static void main(String args[]) {
      Test t = new Test();
      System.out.println("k value is:" + t.add(10,20));
   }
}

Output

k value is:30

Constructor in a Class

  • The purpose of the constructor in a class is used to initialize fields but not to build objects.

  • When we try to create a new instance of an abstract superclass, the compiler will give an error.

  • However, we can inherit an abstract class and make use of its constructor by setting its variables.

Example

abstract class Employee {
   public String empName;
   abstract double calcSalary();
   Employee(String name) {
      this.empName = name; // Constructor of abstract class  
   }
}
class Manager extends Employee {
   Manager(String name) {
      super(name); // setting the name in the constructor of subclass
   }
   double calcSalary() {
      return 50000;
   }
}
public class Test {
   public static void main(String args[]) {
      Employee e = new Manager("Adithya");
      System.out.println("Manager Name is:" + e.empName);
      System.out.println("Salary is:" + e.calcSalary());
   }
}

Output

Manager Name is:Adithya
Salary is:50000.0 

Updated on: 22-Nov-2023

7K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements