Java基础知识之多态性
来源:互联网 发布:python 编码转换 编辑:程序博客网 时间:2024/06/07 20:46
概念:Java的多态性是指不同的类的实体可以对同一消息产生不同的回应,即同一消息会由于调用的对象不同而产生不同的行为方式。
实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
实现多态的三个必要条件:继承、重写、向上转型。
下面来看一个例子:
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想完全做对这道题目确实需要对多态理解的特别深刻,下面我进行讲解:
1、2、3中,是调用a1中的方法,a1为A类对象实例也是A,那么在a1中的可用的方法为一、二这俩个,参数分别为b、c、d由于b、c分别继承为A可将其视作A类型,故很简单输出分别为 A and A、A and A、A and D。
4、5、6中,a2对象是一个A类型的上转型对象,a2可用的方法为方法一、方法四,很多人会问为什么是方法四而不是方法二呢,这里就是多态性的体现,a2是A类型的所以a2只能使用A类的方法方法一,方法二,但同时a2给的是B类的实体,在B类中重载了方法二,故方法二被方法四覆盖了!这样看来就很容易判断最后的结果了,7 8 9 的输出亦是同样的道理。
0 0
- Java基础知识之多态性
- 胡博君解Java之多态性
- Java基础之多态性
- java之多态性
- java基础之多态性
- Java之多态性
- JAVA面向对象之多态性
- java学习笔记之多态性
- java夯实基础之多态性
- Java之旅(9)多态性
- java之旅 (五)多态性
- java三大特征之 多态性
- JAVA多态性 之动态连接详解
- Java编程基础篇之多态性
- java基础之对象的多态性
- JAVA三大特性之三---多态性
- 黑马程序员——Java之多态性
- Java 学习之 多态性的理解
- 成为一个Java的架构师要学习哪些知识
- Androidstudio自定义打包出来的apk包名
- WebSphere Application Server 8.5 通过SDK文件直接配置JAVA7
- CCF201612-1
- 机器学习 深度学习 计算机视觉 资料汇总
- Java基础知识之多态性
- Eigen使用快速参考
- RxSwift (7) 手动启动序列[连接性序列]
- sqlserver 让一列的值等于 该列的值加上该行序号的写法 (我只是写给自己看的)
- 如何运行Struts2官网最新Demo-
- Linphone3.2.5 debug机制 自定义log日志
- Hibernate框架中的缓存
- lucene分页查询
- 图像仿射,透视变换