package util;
public class A {
public String show(A a) {
return "A and A";
}
public String show(D d) {
return "A and D";
}
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b1 = new B();
B b2 = new C();
B b3 = new D();
System.out.println(a1.show(a1));
System.out.println(a1.show(b3)); //a1先看左边,A类没有带b参数的show方法,所以调用
//带a参数的show方法,因为A是B的父类,再看右边因为是
//new A()所以调用的是A类里show(A a)方法。
System.out.println(a2.show(b3)); //这个是a2,先看左边因为是A类型的所以从A类找show(B b)
//方法,因为A没有带b参数的show方法,所以调用带a参数的show
//方法,因为A是B的父类,再看右边因为是new B()所以调用的
//是B类的show(A a)方法。
//总结:先找本类,再找父类,最后再找参数的父类在本类的方法
}
}
class B extends A{
public String show(B b) {
return "B and B";
}
public String show(A a) {
return "B and A";
}
}
class C extends B{
}
class D extends B{
}
引用类型的多态。
最新推荐文章于 2022-04-13 10:41:02 发布