MyInterface mine = new MyInterface(2);
then it is not possible right?
That's right. You can never do something like
MyInterface mine = new MyInterface(2);
After new
you have to pick a class that implements the interface(*), such as MyClass
:
MyInterface mine = new MyClass(2);
Why?
You can think of an interface as a property of a class. An analogy would be an adjective, such as "Red". It makes perfect sense to create, say, a red ball (new RedBall()
) or a red car (new RedCar()
), but just creating "red" (new Red()
) doesn't make sense ("red what??").
(*) You can create anonymous classes that implement the interface on the fly by doing new MyInterface() { ... }
but technically speaking you're still instantiating a class.