Java面试题,Java三大特性之一——多态的理解
首先我们知道java是一门面向对象的语言
面向对象三大特性,封装、继承、多态。
封装、继承、多态 ↓
无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的。因为封装好了才能继承,封装和继承都是为多态做准备的。
多态的三个前提条件:
1、继承关系
2、方法的重写
3、向上转型(即父类引用指向子类对象)
多态又分为两种情况,编译时多态,运行时多态。先简单介绍一下这两种的区别
编译时多态:对象引用本类实例
废话不多直接上图举例:
上图我们看到cat对象和animal对象都是引用的本类实例,也就是说,在方法启动前,编译已经确定了上面两个tostring方法分别是谁调用的
运行时多态:父类引用指向子类对象
上图是父类引用指向子类对象,也就是向上转型。这里的tostring方法我们知道返回的肯定是子类的方法的结果。这就是java的运行时多态(接下来是重点,注意看了),java从实例类开始寻找匹配的方法,如果没有匹配的方法,沿着继承关系逐渐往上匹配父类的方法。
上面的关系捋顺再说明多态的好处:
我们看到cat类是继承animal类的,继承性提高了代码的可维护性
向上转型,不同的实例类,产生不同的结果。如果我在定义一个dog类也是一样,会输出dog的tostring。这就是代码的可拓展性
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
UML-第二讲
UML概述UML的诞生与发展创始于1994年10月1997年被OMG采纳UML是什么UML的特点统一标准面向对象...
[阅读全文]
-
第二阶段学习总结
0.前言主要说明本次博客针对的作业情况 第二阶段的学习也结束了,在此做一些总结和回顾;相比第一阶段的学习确实难度增加了,作业的分数也不太好,完成作业需要...
[阅读全文]
-
-
搭建eureka高可用
Eureka高可用 1.设置服务器之间的host,测试环境是在window10上搭建的,所以去修改C:\Windows\System32\drivers...
[阅读全文]
-
-
-
OO第二单元--多线程电梯
一、设计策略 (1)单电梯: a、线程分工: elevator、request两个线程。 elevator线程主要负责乘客的接送和进出。 request...
[阅读全文]
-
OO UNIT 2 个人总结
第二单元面向对象作业——性感电梯在线吃人 Part 1:单部可捎带电梯 多线程设计策略 本次电梯仅仅只有一部运行,因此,在多线程的设计中难度不大,并且,...
[阅读全文]
-
-
BUAA OO 第二单元总结
BUAA OO 第二单元总结 Part 1 设计策略 这三次作业采用了 主线程获取请求,多级调度器逐级分派,电梯模拟运行的策略 。具体来说,主线程实例化...
[阅读全文]
-
网友评论