java多态性
来源:互联网 发布:推荐淘宝蓝莓苗卖家 编辑:程序博客网 时间:2024/06/09 15:42
public class PolyDemo09{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
⑵ A and A
⑶ A and D
⑷ B and A
⑸ B and A
⑹ A and D
⑺ B and B
⑻ B and B
⑼ A and D
你可能会有疑惑,我们来看一下解释:
a1.show(b));Class A 中没有show(B obj),B转向B的父类A,执行A show(A obj)--->return "A and A"
a1.show(c));Class A 中没有show(C obj),C转向C的父类B,Class A 中没有show(B obj),再转向父类A,执行A show(A obj)--->return "A and A"
a1.show(d));Class A 中有show(D obj)执行A show(D obj)--->return "A and D"
这个比较特殊:A a2 = new B();父类声明,子类实例,你应该把a2当作子类重写完后的父类看,注意只有父类的方法。
a2.show(b));Class A 中没有show(B obj),B转向B的父类A,执行A show(A obj),A的show方法被重写,执行B show(A obj)--->return "B and A"
a2.show(c));Class A 中没有show(C obj),C转向C的父类B,Class A 中没有show(B obj),B转向父类A,执行A show(A obj),A的show方法被重写,执行B show(A obj)--->return "B and A"
a2.show(d));Class A 中有show(D obj)执行A show(D obj)--->return "A and D"
b.show(b)); Class B 中有show(B obj)--->return "B and B"
b.show(c)); Class B 中没有show(C obj),C转向C的父类B,执行B show(B obj)--->return "B and B"
b.show(d)); Class B 中有继承了Class A的show(D obj),执行A show(D obj)--->return "A and D"
- java 多态性
- java 多态性
- java多态性
- Java多态性
- java 多态性
- Java多态性
- Java多态性
- java多态性
- java多态性
- java多态性
- Java多态性
- Java多态性
- Java多态性
- java多态性
- java 多态性
- java多态性
- java多态性
- java多态性
- JavaScript之浅谈object.prototype.toString.call()
- Okhttp拦截器统一异常处理并多次读取response.body().string()
- Javascript 中的神器——Promise
- ArcGIS水文分析实战教程(5)细说流向与流量
- 从零开始搭建一个完善的MVP开发框架(三),对列表型数据请求进行抽象,优化列表型数据的处理
- java多态性
- [hdu5698]: 瞬间移动(两种方法求组合数)
- Python/NodeJS坑记
- 学习互联网架构第十一课(并发类容器之Queue)
- oracle case表达式
- ubuntu系统中安装caffe可视化工具digits
- 【Android】开发干货-技术分享之高仿QQ微信网页加载进度条实现
- 从零开始搭建一个完善的MVP开发框架(四) —对View(Activity,Fragment等)层组件进行封装简化View层的开发
- 学习OpenCV——行人检测&人脸检测(总算运行出来了)