class A { public void f() { System.out.println("Blah."); } } class B extends A { public void f() { super.f(); System.out.println(this.getClass().getName()); } } class C extends B { } public class D extends C { public static void main(String[] args) { new A().f(); System.out.println(); new B().f(); System.out.println(); new C().f(); System.out.println(); new D().f(); } } /* vertex01% java D Blah. Blah. B Blah. C Blah. D */