// method override import java.io.*; class a extends a1 { <error descr="Static method 'f()' in 'a' cannot override instance method 'f()' in 'a1'">public static void f()</error> { } <error descr="Instance method 'f1()' in 'a' cannot override static method 'f1()' in 'a1'">public void f1()</error> { } } class a1 { public void f() {} public static void f1() {} } interface i { void f1(); } <error descr="Static method 'f1()' in 'a1' cannot override instance method 'f1()' in 'i'">class c_a1_i extends a1 implements i</error> { } interface ii { int f(); } <error descr="'f()' in 'a1' clashes with 'f()' in 'ii'; attempting to use incompatible return type">abstract class c_a1_ii extends a1 implements ii</error> { } interface i2 { int f1(); } <error descr="'f1()' in 'i2' clashes with 'f1()' in 'i'; methods have unrelated return types">interface i3 extends i, i2</error> { } class weak { void f1() {} } <error descr="'f1()' in 'weak' clashes with 'f1()' in 'i'; attempting to assign weaker access privileges ('package-private'); was 'public'">class a2 extends weak implements i</error> { } class a3 { protected void f1() {} } <error descr="'f1()' in 'a3' clashes with 'f1()' in 'i'; attempting to assign weaker access privileges ('protected'); was 'public'">class a4 extends a3 implements i</error> { // public void f1() {} } class a5 extends a3 implements i { // if we override suspicious method, its OK public void f1() {} } // deep inherit class da1 { void f() {} } class da2 extends da1 { void f() {} } class da3 extends da2 {} interface MyInterface { public void myMethod(); } class MyInterfaceImpl implements MyInterface { <error descr="Static method 'myMethod()' in 'MyInterfaceImpl' cannot override instance method 'myMethod()' in 'MyInterface'">public static void myMethod()</error> { /* implementation goes here */ } <error descr="Static method 'toString()' in 'MyInterfaceImpl' cannot override instance method 'toString()' in 'java.lang.Object'">private static String toString()</error> { return null; } } // Sun-style inheritance class Sunc { protected void f() {} } class Suncc extends Sunc { public void f() {} } interface Suni { public void f(); } class Sunccc extends Suncc implements Suni { } // override static class StA { public static StA createInstance() { return new StA(); } } class StB extends StA { public static <error descr="'createInstance()' in 'StB' clashes with 'createInstance()' in 'StA'; attempting to use incompatible return type">String</error> createInstance() { return null; } } //////// class Foo { protected static void foo(String s) {} } class Bar extends Foo{ <error descr="'foo(String)' in 'Bar' clashes with 'foo(String)' in 'Foo'; attempting to assign weaker access privileges ('private'); was 'protected'">private</error> static void foo(String s) {} } ///////////// IDEADEV-41779 class A { public static C C() { return new C(); } } class B extends A { } class C extends B { public C() {} } /////////////////////////// class Z1 { public static final void doItBaby() { System.out.println("Hello, diar A"); } } class Z2 extends Z1 { <error descr="'doItBaby()' cannot override 'doItBaby()' in 'Z1'; overridden method is final">public static void doItBaby()</error> { System.out.println("Hello, diar B"); } } ///////////////////