- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 继承与多态 上一章主要阐述了类和对象的概念。本章将学习面向对象程序设计中两个重要的概念—继承和多态。利用继承,可以基于已经存在的类构造新类,还可以在新类中添加一些新的成员或修改继承了的成员,以满足新的需求。而多态是在继承的基础上引出的,可以解决子类父类中的成员重名问题。 4.1 继 承 概 述 利用继承可以很好地实现代码重用问题。在利用已有的类构造新类时,新类保留已有类的属性和行为,并可以根据要求添加新的属性和行为。例如,卡车具有一般汽车的属性,而特有的属性就是载货。在第3章中,曾经介绍过类之间的关系:“USES-A”关系、“HAS-A”关系、“IS-A”关系。其中,“IS-A”关系是继承的一个特征。 4.1.1 超类、子类 被继承的类一般称为“超类”或“父类”,继承的类称为“子类”。当子类继承超类时,不需声明该类继承了的已定义的超类的实例变量和方法,子类体内只需写出新增的变量和方法即可。超类、子类是继承中非常重要的概念,它们形象地描述了继承的层次关系。 继承节省了定义新类的大量工作,可以方便地重用代码。例如,把汽车作为父类,当创建汽车的子类轿车时,品牌、价格、最高时速等属性会自动地被定义,调用刹车方法时会自动调用在汽车类中定义的刹车方法。但一个子类不必非要使用继承下来的属性和方法,一个子类可以选择覆盖已有的属性和方法,或添加新的属性和方法。 4.1.2 继承层次 继承关系可以用树形层次表达出来。为汽车类的继承层次关系,注意,汽车类定义了品牌、价格、最高时速等属性(成员变量),以及刹车、启动等方法。当定义继承汽车类的子类卡车时,它自动继承汽车类的属性和方法。 继承只是代码重用的一种方式,滥用继承会造成很严重的后果。只有当需要向新类添加新的操作,并且把已存在类的默认行为融合进新类中时,才需要继承已存在的类。 4.2 Java中的继承 在Java中,实际上所有的类均直接或间接继承自java.lang.Object类,也可以说Object类是Java中的总根类。实际开发中,如不特殊指定,开发人员自己定义的类均直接继承自Object类。 4.2.1 派生子类 在Java中,类的继承通过entends关键字实现。在创建新类时,使用extends指明新类的父类,具体语法如下。 class 子类名 extends 父类名 { 子类类体 } 4.2.2 继承规则 当类B成功继承类A后,就涉及到成员变量的继承问题。下面将从两个方面介绍成员变量继承的相关知识,主要包括成员变量的继承规则与成员变量的隐藏。 1.成员变量的继承规则 2.成员变量的隐藏 对于成员变量来说,当子类本身具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。其含义是,在子类中直接调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是从父类继承的成员变量, 继承原则 子类继承父类的成员变量,包括实例成员变量和类成员变量。 子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。 子类不能继承父类的构造方法。因为父类构造方法创建的是父类对象,子类必须声明自己的构造方法,创建子类自己的对象。 子类能够继承父类的析构方法。 子类不能删除父类成员。 子类可以增加自己的成员变量和成员方法。 子类可以重定义父类成员。 多重继承的概念 美国教授研究出空中汽车没有翅膀也能飞行。据了解,MX-400试用2年多来,它最高飞行时速超过了600多公里,比直升机快2倍,可载4人,飞行最大高度9000米,航程1500公里。遇上风雨交加,它也能畅行无阻,夜晚照样飞行,其飞行本领毫不逊色一般的飞机。可是飞机需要机场、跑道才能起降、飞行,... 交通工具有三类:空中交通工具、水上交通工具、陆地交通工具。 空中汽车属于? Java不直接支持多重继承。 4.2.3 方法的继承与覆盖 在类继承机制中,方法的继承和覆盖是其核心内容之一。方法继承允许子类使用父类的方法,而覆盖是在子类中重新定义父类中的方法,更显示了继承的灵活性。 1.方法的继承 从本质上讲,方法也是一种成员,因此继承规则与成员变量的继承规则完全一样,其是否能被继承同样取决与访问限制。 2.方法的覆盖(override) 覆盖(override)是指子类声明并实现父类中的同名方法并且参数列表也完全相同。 重写的主要优点是能够定义各子类的特有行为, 4.2.4 this与super 在Java中,this和super与继承是密切相关的。this常用来引用当前对象,而super常用来引用父类对象。 1.this 方法中的某个对象与当前对象的某个成员有相同的名字,这时为了不至于混淆,可以使用this关键字来指明要使用某个成员,使用方法是“this.成员名”,即使用this隐式地引用对象的
您可能关注的文档
- UML体系结构第4章.ppt
- UML通用知识点综述.ppt
- 长治会议系统.ppt
- UML统一建模课件(完整版).ppt
- 常州市职业学校教学评优课说课交流.ppt
- UML图.ppt
- 班主任工作基本规范.ppt
- UML图解基础教程.ppt
- UML完整例子.ppt
- 半岛铁盒安卓简介.ppt
- 2025年高校教师资格证之《高等教育心理学》综合提升试卷及参考答案详解1套.docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(综合卷).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(突破训练).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(基础题).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(夺分金卷).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(培优).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(巩固).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升练习题附答案详解(名师推荐).docx
- 2025年高校教师资格证之《高等教育心理学》综合提升试卷及参考答案详解一套.docx
- 医疗护理知识精选试题之风湿热等多知识点测试卷.docx
文档评论(0)