Consider you are having 2 base classes each with 4 methods( might have same method, doesn't matter). Now you are going to create class 3 by inheriting the properties of both the base classes ( 1 and 2)
1. Is it necessary to use all the methods in class 3 ( 8 out of 8),
No you can make use of 0 methods at the min , and 8 methods at the max..
So inturn you are wasting the memory there.... if you inherit from interface it is necessary that all the methods has to be implemented by the sub class ( if at all subclass is not declared as abstract).. so there is no wastage of memory
2. As you know, methods of interface will have only declaration and the definition should be in sub class only, but in case of class you will have definition in both super class and subclass, which inturn consumes more memory than the interface.. Speed of selecting the definition is not so quick in case of class since it has lot of definition in super class(es) as well as in sub class.
3. As you know, there is no constructor for interface since it has only final variables and abstract methods. so network traffic is less while comparing the traffic with inheritance with class.
so in simple, we make use of interfaces in order to utilize the memory properly and to reduce the traffic there by improving the performance