本帖最后由 只想要一盏灯 于 2013-10-24 18:24 编辑
这个是在论坛里面看到的帖子,感觉对我等新人很有帮助,只是下面回复的答案有点看不懂,希望有大神能详细的解释下!谢谢public class DuoTaiTest{
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));
}
}
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 {
}
下面是回复的答案:
⑴ A and A 传入对象b,b是a的子类,由public String show(A obj)接收
⑵ A and A 传入对象c,c是a的子类,由public String show(A obj)接收
⑶ A and D 传入对象d,直接由public String show(D obj)接收
⑷ B and A 传入对象b,因为多态的局限性,只能访问父类中的成员,而A类中并没有public String show(B obj),所以由public String show(A obj)接收
⑸ B and A 同(4)
⑹ A and D 传入对象d,因为B类继承了A类中的public String show(D obj)方法,所以直接由public String show(D obj)接收
⑺ B and B 传入对象b,直接由public String show(B obj)接收
⑻ B and B 传入对象c,c是b的子类,由public String show(B obj)接收
⑼ A and D 同(6)
能不能请童鞋们帮我详细的分析一下这个实现的过程:
a1.show(b);
然后我记得这么一句话:编译看左边,运行看右边,
应该怎么把这句话结合进去呢?
编译看左边,这个a1.show(b)怎么才能够用这句话实现呢?
谢谢大家了
|