5、 运行下面程序,体会多态的特性.
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 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)); ⑨
问①――>⑨输出结果。
输出结果为:
A and A
A and A
A and D
B and A
B and A
A and D
B and B
B and B
A and D
提供给大家去细细体会一下。
当你完全了解输出的结果,那么多态也就理解透彻了。
------解决方案--------------------
什么叫java 动态单分派 静态多分派 多态就显得很容易了
------解决方案--------------------
不错 支持楼主
------解决方案--------------------
------解决方案--------------------
非常好。
------解决方案--------------------
以前有人发过了
------解决方案--------------------
最可能迷惑的是第8个,B有两个show方法,一个参数是C的爸爸,一个参数是C的爷爷,那么传入C的时候,究竟是爸爸接收还是爷爷接收呢,由于爸爸是儿子的上代,而爷爷是儿子的上代的上代,爸爸会更近一些。
------解决方案--------------------
好吧,多态..
------解决方案--------------------
楼主 具体解释一下 有的地方迷迷糊糊的!
------解决方案--------------------
真的不错哦
------解决方案--------------------
------解决方案--------------------
这就是传说中的多态!
------解决方案--------------------
求解析
------解决方案--------------------
对4,5,6不理解,求解析
------解决方案--------------------
没有看懂啊 求解释
------解决方案--------------------
- Java code
System.out.println(a1.show(b)); //A and A //没有找到对B类实例的方法,但有其父类A实例的方法,故作为A类实例传入 System.out.println(a1.show(c)); //A and A //同上 System.out.println(a1.show(d)); //A and D //A类有对D类实例的方法,作为D类实例传入 System.out.println(a2.show(b)); //B and A //(父类引用子类对象,只有父类的方法,但B类重写了A类方法) //父类A没有对B类实例的方法,作为A类实例传入 System.out.println(a2.show(c)); //B and A //同上 System.out.println(a2.show(d)); //A and D //下面是B类继承A类,有A,B类方法,B类重写父类对A实例的方法 System.out.println(b.show(a1));//B and A 这个我自己加,为说明方法给重写了 System.out.println(b.show(b)); //B and B System.out.println(b.show(c)); //B and B System.out.println(b.show(d)); //A and D }}
------解决方案--------------------