// An interface doing too many things public interface SomeInterface{ void someMethod1(); void someMethod2(); void someMethod3(); } // Instead, we separate the tasks into smaller interfaces public interface Interface1{ void someMethod1(); } public interface Interface2{ void someMethod2(); } // Interface supports multiple inheritance public interface Interface3 extends Interface1, Interface2{ // Now Interface2 has access to "someMethod1()" and "someMethod2()" void someMethod3(); } public class SomeClass{ public void foo1(Interface1 obj){ // receiving method injection obj.someMethod1; } public void foo2(Interface3 obj){ // receiving method injection obj.someMethod1; obj.someMethod2; obj.someMethod3; } }