I get the output "DDDD" for the following code.
I thought it would give the output "DCBA" because of the explicit casts done inside m2(). Please explain why these casts are ignored ?
class A{
void m1(){
System.out.print("A");
}
}
class B extends A{
void m1(){
System.out.print("B");
}
}
class C extends B{
void m1(){
System.out.print("C");
}
}
class D extends C{
void m1(){
System.out.print("D");
}
void m2(){
m1();
((C)this).m1();
((B)this).m1();
((A)this).m1();
}
public static void main(
String ar[]){
new D().m2();
}
}