class A { public static int x = 1; public static int getX() {return x;} } class B extends A {} class C extends A { public static int x = 2; public static int getX() {return x+1;} } public class inherit_static { public static void main(String[] args) { System.out.println(A.getX()); System.out.println(B.getX()); System.out.println(C.getX()); System.out.println("--"); C ref1 = new C(); System.out.println(ref1.x); System.out.println(ref1.getX()); System.out.println("--"); A ref2 = new C(); System.out.println(ref2.x); System.out.println(ref2.getX()); } } /* output: 1 1 3 -- 2 3 -- 1 1 */