class A 
{
void fun1()
{
System.out.println("A.fun1");
}
void fun2()
{
System.out.println("A.fun2");
}
}class B extends A
{
void fun2()
{
System.out.println("B.fun2");
}
public void showBThis()
{
this.fun1();
this.fun2();
}
public void showBSuper()
{
super.fun1();
super.fun2(); /* Call A.fun2, why not B.fun2? */
}
}public class C extends B
{
void fun1()
{
System.out.println("C.fun1");
}
public static void main(String[] args)
{
C c = new C();
System.out.println("c.showBThis()");
c.showBThis();
System.out.println("c.showBSuper()");
c.showBSuper();
}
}