class A {
public String show(D obj) { //方法一
return ("A and D");
}
public String show(A obj) { //方法二
return ("A and A");
}
}
class B extends A {
public String show(B obj) { //方法三
return ("B and B");
}
public String show(A obj) { //方法四
return ("B and A");
}
}
class C extends B {
}
class D extends B {
}
public class Test1 {
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();
/**
* b这个对象是B这个类的,且还是通过自己的类来创建的对象,所以方法必定在class B里,
* class里有和该方法参数类型相同的方法所以直接执行
*/
System.out.println("7--" + b.show(b));
System.out.println("9--" + b.show(d));
System.out.println("3--" + a1.show(d));
System.out.println("1--" + a1.show(b));
System.out.println("5--" + a2.show(c));
System.out.println("8--" + b.show(c));
System.out.println("4--" + a2.show(b));
System.out.println("2--" + a1.show(c));
System.out.println("6--" + a2.show(d));
}
}
运行结果:
7--B and B
9--A and D
3--A and D
1--A and A
5--B and A
8--B and B
4--B and A
2--A and A
6--A and D