interface I { void f(); } interface II extends I { @Override void f(); } class C implements I { @Override public void f() { } } class Test extends NonExisting { @Override void foo() {} } class Test1 implements NonExistingIface { @Override void foo() {} } class Test2 extends Test { @Override void foo() {} @Override void foo2() {} }