class A{
public String show(D obj){
return("A and D");
}
public String show(A obj){
return("A and A");
}
public String show(C obj){
return("A and C");
}
}
class B extends A{
public String show(B obj){
return("B and B");
}
public String show(A obj){
return("B and A");
}
public String show(C obj){
return("B and C");
}
}
class C extends B{}
class D extends B{}
public class CopyOfTest{
public static void main(String[] args){
A a1=new A();
A a2=new B();
B b=new B();
C c=new C();
D d=new D();
System.out.println(a1.show(b));
System.out.println(a1.show(c));
System.out.println(a1.show(d));
System.out.println(a2.show(b));
System.out.println(a2.show(c));
System.out.println(a2.show(d));
System.out.println(b.show(b));
System.out.println(b.show(c));
System.out.println(b.show(d));
}
}
优先级由高到低依次为this.show(obj)、super.show(obj)、this.show((super)obj)、super.show((super)obj)
输出结果为:
A and A A and C A and D B and A B and C A and D B and B B and C A and D