In java when we write some thing as
Class1 a= new Class2();
what exactly happens is we are calling the constructor of class2 , which means we are creating a object on the heap of class2 and assigning it to reference variable of type class1 (i.e a). Think of the left part as a remote control and the right part as tv. The left part only control the functions that can be called on the object created in the right part (Since there maybe more functions in the implementing class than declared in the interface).
If we write something like this :-
Class1 a= new Class1();
Both reference and object variables are of type Class1 and hence all methods of Class1 can be called.
If we write something like this:-
Class1 a= new Class2();
All methods of Class2 will be called but restricting to those declared in Class1.
Therefore your inteface is never being instantiated and it cant , Its just providing a type of restriction to the objects created (ob1 and ob2) to call only the two methods m1 and m2 on the objects no matter how many functions are extra added in the World class.