- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * 第7章 继承和多态 7.1.1 为什么需要继承 先看个例子:假如我们要开发一个复杂的文字处理软件,类似Word,其中含有很多对话框,这些对话框的出现,都需要编写代码。那么总代码量就会很大。而实际每个对话框都有宽度和高度,都有背景颜色,都有标题,都可以显示,都可以关闭……等这些共同功能,我们可以将这些对话框共同的功能写在一个类中,让每个对话框都来“继承”这个类中的功能。 这种策略叫做继承(Inheritance)。继承,是面向对象的重要特征。 在Java中,被继承的类叫做父类、基类或者超类,与之对应的叫做子类或者派生类。继承是通过extends(继承)关键字实现的,格式如下: class 子类 extends 父类{} 7.1 使用继承 7.1.2 如何实现继承 显然,两个对话框都有标题和显示功能,因此,首先将两个类共同的部分写成一个类:Dialog。代码为: 注意:如果一个成员是private的,不能在类的外部使用,当然也不能被子类使用。一般,成员变量定义为protected类型,成员函数定义为public类型。 7.1 使用继承 7.1.2 如何实现继承 接下来编写字体对话框类FontDialog,继承Dialog类: 表面看,该类只定义了一个成员变量fontName,实际上,还从父类继承了title,可以当成自己的变量一般使用,从“this.title = title;”就可以看出来。 7.1 使用继承 7.1.2 如何实现继承 我们用一个主函数来进行测试,代码为: 运行,控制台上打印: 7.1 使用继承 7.1.2 如何实现继承 注意: 1. Java不支持多重继承,一个子类只能有一个父类,不允许出现如下情况: class 子类 extends 父类1,父类2 {} 2. 但是,Java中可以有多层继承,比如A继承了B,B又继承了C。此时相当于A间接继承了C。 7.1 使用继承 7.1.3 继承的底层本质 实际上,从本质上讲,子类继承父类之后,实例化子类对象的时候,系统会首先实例化父类对象。 只要实例化子类对象,系统就会自动先实例化一个父类对象与之对应,当然此时调用的是父类没有参数的构造函数。 此时就出现了一个问题:父类构造函数万一有参数呢?此时,系统就必须要求在实例化父类对象时,传入参数,否则报错。看例子: 7.1 使用继承 7.1.3 继承的底层本质 系统在子类构造函数处报错: 其原因是,父类没有不带参数的构造函数。解决该问题,有两种方法: 1. 给父类增加一个不带参数的空构造函数。 2. 在子类的构造函数中,第一句用super来给父类构造函数传参数。 ?注意 “super(title);”必须写在子类构造函数的第一句,传入的参数必须和父类构造函数中参数列表类型匹配。 7.1 使用继承 7.2.1 什么是成员覆盖 在子类继承父类时,如果出现子类成员和父类成员定义相同的情况,会有什么现象发生呢?(值得一提的是,我们一般讨论的是成员函数的定义相同,成员变量的定义相同,一般很少使用)。 子类中成员函数的定义和父类相同,指名称相同,参数列表相同、返回类型相同。 看下面的代码: 7.2 成员的覆盖 7.2.1 什么是成员覆盖 在父类和子类中都有函数show(),子类对象调用“fd.show();”,调用的是子类中的show,函数父类中的show呢?运行,控制台上打印: 可见,如果子类中的函数定义和父类相同,最后调用时是调用子类中的方法。这叫做覆盖或者重写(Override)。 7.2 成员的覆盖 7.2.2 成员覆盖有何作用 从前面可以看出,成员覆盖好像是不小心引起的,实际不然。成员覆盖有着很大的作用。其最大的作用是:在不改变源代码的情况下,能够对一个模块的功能进行改造。 比如,我们从网上下载了一个类,该类专门负责图像处理操作,包含三个功能: 7.2 成员的覆盖 7.2.2 成员覆盖有何作用 由于该类不是为我们量身定做的,因此,功能可能无法完全满足需要。假如我们在使用时,并不是从硬件读取图像,而是从文件读取图像,因此,需要改变read函数功能;而对于handle函数,我们希望图像去噪声之后还能进行锐化;功能3不变。我们就可以充分通过覆盖来帮我们完成: 7.2 成员的覆盖 7.3.1 什么是多态 多态(Polymorphism),也是面向对象的基本特征之一,也是软件工程的重要思想。 ?注意:前面讲解的函数重载也是一种多态,称为静态多态,本章讲解的多态,特指
您可能关注的文档
- chap财务管理说课.ppt
- 4方差医学统计说课.ppt
- 4肺结核饮食治疗说课.ppt
- Chap存款服务的管理和定价说课.ppt
- chap电力系统运行稳定性说课.ppt
- 4分数的意义和性质说课.ppt
- chap定价策略说课.ppt
- 4服装企业竞争与发展战略说课.ppt
- chap房地产管理信息系统的系统.说课.ppt
- 4辐射环境监测与事故应急监测袁之伦说课.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 2025年高考数学模拟卷(四)含答案及解析.pdf VIP
- 急性呼吸循环衰竭的早期识别与救治(共88张PPT)【88页】.pptx VIP
- 2023年河南省普通高校对口招生考试电子类专业课试卷.pdf VIP
- 院感及院感管理的基本概念.ppt VIP
- 维生素d3与骨骼健康课件.ppt
- 重点项目信息管理平台建设方案.docx
- 2025年高考数学模拟卷(三)含答案及解析.pdf VIP
- 河师大焦争鸣张万琴版线性代数答案解析.pdf VIP
- Unit4NaturalDisastersListeningandSpeaking课件高中英语人教版22.pptx
- 接受人生的荒谬是强大还是懦弱的表现?辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
文档评论(0)