This is a most frequently asked java interview question. The answer is No, interface cannot have constructors. In this post we will discuss why constructors are not allowed in interface?
As we know that all the methods in interface are public abstract by default which means the method implementation cannot be provided in the interface itself. It has to be provided by the implementing class. Lets have a look at the following program:
interface SumInterface{ public int mymethod(int num1, int num2); } public class SumClass implements SumInterface{ public int mymethod(int num1, int num2){ int op= num1+num2; return op; } public static void main(String args[]) { SumClass obj= new SumClass(); System.out.println(obj.mymethod(2, 3)); } }
As you can see we have implemented the method mymethod()
in the class SumClass
that implements the interface. So there is no need to have interface object(interface cannot be instantiated in fact) in order to call the method as the implementation is in the class and class object can call this method.
Lets come to the point now: All the methods of interface doesn’t have body so there is no need to call the methods in the interface itself. In order to call any method we need an object since there is no need to have object of interface, there is no need of having constructor in interface (Constructor is being called during creation of object).
rajyalakshmi says
good
akash says
but now default method of interface have a body. and child class constructor call to the parent constructor automatically , so what happened in above example. please tell me , i am newbie. Thanx
Chaitanya Singh says
Hey Akash, You are missing a point here. Child class constructor invokes parent class (not interface) constructor.