interface Generic1 { public void foo(T p); } interface Generic2 extends Generic1 { public void foo2(Y p); } public class Test implements Generic2{ public void foo2(Y p) { } public void foo(Y p) { } public static void main(String []argv) { Test t = new Test(); t.foo(7); t.foo2(9); } }