| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【开开心心学java,快快乐乐写代码】面向对象的三大特性之一:多态 -> 正文阅读 |
|
[Java知识库]【开开心心学java,快快乐乐写代码】面向对象的三大特性之一:多态 |
目录 1、 多态概念多态:即不同类的对象调用同一方法时,根据对象的不同所表现出的行为不同。 通俗一点的说法就是:同一个事件,发生在不同的对象上时,所表现出来的行为不同(这里的事件指方法)。比如动物都是吃东西,但猫吃猫粮,狗吃狗粮: 2、多态的实现条件java中实现多态,必须满足以下几个条件,缺一不可:
也许现在看这几个条件还有点迷糊不理解。但是别担心,接下来我将用通俗的语言将这几个条件全部串起,带你理解是怎么用到这几个条件来体现多态的。继承和重写我之前都有写过相应博客,那向上转型又是什么呢,在这里我先讲一讲,,理解了向上转型,多态就不难理解啦。 2.1向上转型向上转型:就是将子类对象当成父类对象使用,但是该对象就不能再调用子类中的特有成员。其语法格式为:父类类型 对象名=new 子类类型();
cat是一个父类类型的引用,但是可以引用一个子类对象,因为是小范围转为大范围(创建一个猫,当做动物看待)。 请看以下代码,这里用到了向上转型:
输出结果: 在主函数里面,cat和dog都是父类类型的引用,分别都调用了父类中的eat()方法,但是最后所表现出的状态却不一样,在这里就体现了多态。 2.2 动态绑定以上代码的输出结果可能有些人不太理解,明明调用的好像是父类中的eat()方法,但是最后表现出来的却像是调用子类的eat()方法呢?在这里其实发生了动态绑定。所谓动态绑定,引用究竟引用哪一个方法是在运行时才能确定的。在编译时不能确定(编译就能确定引用调用哪个方法的就静态绑定)。动态绑定经常发生在多态中,就像上面的代码一样。父类引用指向一个子类对象时,调用的函数是被子类重写过的函数时就会发生动态绑定,此时引用虽然调用的像是父类的方法,实际上最后调用的是子类重写父类方法后的方法。 这就是由继承和向上转型所引发的多态,在下面再给大家仔细串一下发生多态整个过程: 首先是在继承机制下,子类会重写父类的某些方法,然后定义一个父类类型的引用,这个引用指向了子类对象。当这个引用去调用父类中被子类重写了的方法时,就会发生动态绑定。最后调用的是子类中重写父类的方法。 3、 多态的优缺点优点1: 能够降低代码的“圈复杂度”,避免使用大量的if-else。 什么是圈复杂度?圈复杂度是一种描述代码复杂程度的方式。一段代码如果平铺直叙,就很容易理解,如果有大量的分支或循环,就认为理解起来较为复杂。 因此我们可以大致的计算一下一段代码中条件语句和循环语句中出现的个数,这个个数就称为圈复杂度。如果一个方法的圈复杂度太高,则一般要考虑重构。 不同公司对于代码的圈复杂度的规范不一样. 一般不会超过 10。 比如我们现在要打印多个图案,如果不用多态,则可以写成以下这个样子:
运行结果: 如果用多态的思想来解决这个问题,则可以写成以下代码:
运行结果: ? 很显然,两个代码实现的功能一样,但第二个代码使用多态来实现需求,使代码的可读性更高,简单明了,更易理解。 优点2:可扩展能力更强。如果我们想在以上的代码中增加一种需求,比如再画个☆,使用多态的方式来改动代码,成本会更低,只需要加入:
缺点:代码的运行效率降低 ?以上就是我要今天分享的内容啦,后续我还会继续更新的哒,常看我的博客会学到很多知识哦? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:08:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |