class A{
void m1(A a){
System.out.println("A");
}
}
class B extends A{
void m1(B b){
System.out.println("B");
}
}
class C extends B{
void m1(C c){
System.out.println("C");
}
}
class D extends C{
void m1(D d){
System.out.println("D");
}
public static void main(
String []args){
A a1=new A();
B b1=new B();
C c1=new C();
D d1=new D();
d1.m1(a1);
d1.m1(b1);
d1.m1(c1);
}
}
Here d1 is the reference of least sub class D.
Is it possible to refer to the Super classes A,B,C?(d1.m1(a1))
Some times these represents compile time error and some times run time error.
Please explain clearly