Can we create an instance of an interface in Java? [duplicate]
You can never instantiate an interface in java. You can, however, refer to an object that implements an interface by the type of the interface. For example,
public interface A{}public class B implements A{}public static void main(String[] args){ A test = new B(); //A test = new A(); // wont compile}
What you did above was create an Anonymous class that implements the interface. You are creating an Anonymous object, not an object of type interface Test
.
Yes, your example is correct. Anonymous classes can implement interfaces, and that's the only time I can think of that you'll see a class implementing an interface without the "implements" keyword. Check out another code sample right here:
interface ProgrammerInterview { public void read();}class Website { ProgrammerInterview p = new ProgrammerInterview() { public void read() { System.out.println("interface ProgrammerInterview class implementer"); } };}
This works fine. Was taken from this page:
http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/
Normaly, you can create a reference for an interface. But you cant create an instance for interface.