面向对象之多态性(基类引用可以指向子类)

1、派生类的对象和基类是属于的关系,即 对象 is a X类,对象属于X类。

2、多态性的概念:

了解多态性之前,要熟悉引用和对象的区别:

对象存储在堆中,引用(符)存储在栈中,引用符的值是对象在堆中的地址,因此通过引用符可以轻松地找到对象。

一般情况下,引用符和对象属于同一类型,基类的引用指向基类的对象,派生类的引用指向派生类的对象,但是我们知道,派生类对象也属于基类,所以基类引用符可以指向派生类对象。

  一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。这种方式经常用作设计模式中的工厂模式。

3、接口

接口实际上就是一个类,只是这个类只声明成员,而不具体实现。故不能创建接口的实例,继承自接口的类必须实现接口的所有方法。接口也能很好的体现多态性,当函数中参数类型为基接口时,则不管是什么类,只要这个类继承于基接口,均可以根据实例化情况来调用。

4、接口、抽象类的相似之处和不同:

接口和抽象类均不能实例化,而且要求派生类实现其抽象方法,但不是必须全部实现。

但抽象类有更多的功能:可以由子类继承,而且可以包括状态数据和具体方法。

5、接口和类的区别:

接口不能从类继承,而类可以实现接口(继承接口);

接口可以继承多个接口,而类虽然可以继承多个接口,却只能继承一个类。

接口成员必须是方法、成员属性、事件或索引器。(注意无数据成员)

所有接口成员必须能公开访问。

6、用类?用接口?

当决定使用类还是接口类型,即查看类型与继承子类之间的关系。接口为类定义一种行为,即它“能做什么”,它允许对象创建自身的副本。另一方面,当继承子类“一种”基类时,就应该使用类。例如:可以创建shape(形状)作为基类,创建circle(圆)作为shape的子类,而将改变形状大小的功能作为一个接口方法。

转载于:https://www.cnblogs.com/dongzhiquan/archive/2011/11/05/2237159.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法设计与分析】11 递归树

当前面所学习的迭代法、差消法等不太好解决的问题,可以使用递归树,来很方便的解决。 文章目录1. 递归树的概念1.1 迭代在递归树中的表示2. 递归树的生成规则2.1 递归树生成实例2.2 递归树应用实例3. 总结1. 递归树的概念 递归树是迭代计算的模型递归树的…

【算法设计与分析】12 主定理及其应用

主定理是一个非常有用的定理,前面我们学习的所有知识都可以用主定理来求解,而不必要使用复杂的计算方法来求解 文章目录1. 主定理1.1 主定理的应用背景1.2 主定理内容2. 主定理的应用2.1 求解递推方程 例12.2 求解递推方程 例22.3 求解递推方程 例33. 总…

CSUOJ 1196- Staginner 去爬山

http://acm.csu.edu.cn/OnlineJudge/problem.php?id1196 这道题也是搜索题,还是dfs,我们只需对最后一行进行搜索,然后找到能爬到的最高高度即可,每走 一步我们就计算一次现在处于的高度h,然后与maxh比较。因为开始少写…

迪普交换机清空配置_交换机环路详解

“ The more you know the more you know you dont know”背景近期在交换机配置中发生了一次接线错误导致交换机环路,从而引发广播风暴的一个例子。所以特意花时间了解一下交换机产生广播风暴的原理,并整理了此篇文章,一来可以梳理自己的知识…

前端学习(342):进制只能介于2-36之间Uncaught RangeError: toString() radix argumen

The error is: Uncaught RangeError: toString() radix argument must be between 2 and 36 Just trying to format the date 只能介于2-36之间

单元测试debug过程中,显示variables are not available

注:我的代码是多线程异步执行的 单元测试,代码在进行debug调试时,执行到某一行代码突然就显示variables are not available,多次尝试,始终是会在某一行代码处出现上述的情况。 经过分析,得出原因:单元测试的…

(转)C++的 RTTI 概念和用途

自从1993年Bjarne Stroustrup 〔注1 〕提出有关C 的RTTI功能之建议﹐以及C的异常处理(exception handling)需要RTTI;最近新推出的C 或多或少已提供RTTI。 然而,若不小心使用RTTI,可能会导致软件弹性的降低。本文将介绍RTTI的观念和近况﹐并说…

1400协议是什么和28181区别_1400张拆解案例,够你PPT拆解学习好几遍了!

本文作者:执生若梦简介:「拆P教室」小伙伴、个人公众号「君梦幻灯」指导:优卡优卡大大前段时间开启了一个新栏目,图解计划。拆解一张图片,向其中学习PPT制作技巧。我一直在收集音乐banner图,现在已经达到了…

【算法设计与分析】13 分治策略的设计思想

算法中很多方法都是可以采用分治策略进行设计与优化,那么什么是分治策略?如何使用分治策略进行算法的设计与分析? 文章目录1. 分治策略的基本思想1.1 二分检索的设计思想1.2 二分归并排序的设计思想1.3 Hanoi塔的递归算法2 小结1. 分治策略的…

字段 新增hive_Hive分区表 | 每日五分钟学大数据

数据分区的一般概念存在已久。其可以有多种形式,但是通常使用分区来水平分散压力,将数据从物理上转移到和使用最频繁的用户更近的地方,以及实现其他目的。Hive中有分区表的概念。我们可以看到分区表具有重要的性能优势,而且分区表…

【算法设计与分析】14 分治算法的一般描述和分析方法

本文主要描述分治算法的一般描述和分析方法。衔接上一篇文章:【算法设计与分析】13 分治策略的设计思想 文章目录1 分治算法的一般性描述1.1 分支算法的时间分析1.2 两类常见的递推方程与求解方法2 总结1 分治算法的一般性描述 设分治算法为:Divide-and…

idea_取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with “" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count to use static import with "” 改为 …

呼呗电销机器人_为什么企业销售电销都用电销外呼智能机器人

电销行业“痛点”明显,成为企业发展桎梏在电销企业中,运营成本占据了很大的资金比例,呼叫中心搭建和后期维护、销售人员的薪酬、培训、学习成本等都需要大量的投入,导致企业发展后劲不足。挂断、拒接常有,谁来拯救电销…

知识管理系统Data Solution研发日记之十二 网页数据抓取Fetch,呈现Render,导出Export...

这篇文章是对第四篇文章《知识管理系统Data Solution研发日记之四 片段式数据解决方案》的补充,提供一套完整的解决方案。请先阅读那一篇文章来了解它的原理。 Rule Editor抓取数据 这里,主要的工作是设定目标地址,正则表达式规则。我生活在深…

【算法设计与分析】15 分治策略:芯片测试

上一篇文章学习了【算法设计与分析】14 分治算法的一般描述和分析方法 文章目录1. 芯片测试1.1 一次测试的过程1.2 如何测试一块芯片的好坏1.3 蛮力算法1.4 分治算法设计思想1.41 分治算法的正确性证明1.42 时间复杂度分析2. 总结本篇文章借助具体的例子来学习分治策略。这个例…

批量 材质 调整_游戏图形批量渲染及优化:Unity静态合批技术

作者:枸杞忧天(本文首发于公众号“偶尔学学Unity”,文章仅为作者观点,不代表GWB立场)最近在准备公司的技术分享,主题是入门批量渲染,想着反正也总结了,不如充几篇博客吧,也算显得没有那么半途而…

css - clearfix-清除浮动

参考: http://www.cnblogs.com/zllwebjs/archive/2010/03/19/1689980.html http://www.cnblogs.com/zhangyufeng523/archive/2011/05/09/2041224.html 清除浮动方法有好几种, 1. 用空div,设置css为clear:both 2. 用空br,设置css为…

【算法设计与分析】16 分治策略:快速排序(快速排序的时间复杂度计算)

上一篇文章学习了:【算法设计与分析】15 分治策略:芯片测试 文章目录1. 快速排序的基本思想1.2 时间复杂度的计算1.21 最坏情况时间复杂度计算1.22 最好情况时间复杂度1.23 平均时间复杂度计算2 总结1. 快速排序的基本思想 用首元素 x 作划分标准&#…

的run窗口不显示_「玩转deepin」如何安装VirtualBox增强功能使得deepin全屏显示?...

在Windows上通过Virtualbox安装deepin深度操作系统,安装完成后,为了让deepin可以在virtualbox中全屏显示,需要安装增强工具,但是不少同学点击安装增强工具后会出现无法安装的情况。在【设备】中点击【安装增强功能】时&#xff0c…

掘金浏览器插件安装图文教程

本文介绍如何安装掘金chrome插件: Chrome插件推荐 2018-02-27 21:53 chrome插件网近日推荐一款设计师开发人员人手必备的一款插件:掘金插件。有网友留言给笔者说希望整理出一套掘金插件详细的安装步骤。于是就有了今天的图文详解掘金插件安装步骤。第一…