版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 继承与多态 在前面我们已经了解了类的基本使用方法。对于面向对象的程序而言,它的精华在于类的继承可以以既有的类为基础,进而派生出新的类。通过这种方式,我们能快捷的开发出新的类,而不需要编写相同的代码,从而大大将少了工作量。而运用类的多态,通过方法的继承和重载,使类中对象有了更大的灵活性。轻松学Java之继承与多态8.1 继承的概念 在Java中,从现有类出发定义一个新类,称为新类继承了现有的类,其中被继承的现有类叫做超类(superclass)或父类,由继承而得到的类称为子类(subclass)。在Java中支持类的单继承和多层继承,但是不支持多重继承,即一个类只能继承一个类而不能继承多
2、个类。轻松学Java之继承与多态8.1.1 继承的实现 实现继承的格式如图8.1所示。 Java类的继承可用图8.2所示的语法来实现。轻松学Java之继承与多态8.1.2 成员字段的继承 父类中声明的字段可以在子类中直接继承,不需要再声明。子类可以继承父类中的字段变成子类自身的字段。轻松学Java之继承与多态8.1.3 成员方法的继承 成员方法也可以继承。父类中声明的方法,子类中可以直接访问无需再声明,同样可以达到代码重用的目的。子类除了可以继承父类中的字段及方法之外,还可以增加自己的成员方法。轻松学Java之继承与多态8.2 访问修饰符 在编写程序的过程中,我们有时并不想父类所有的成员都被子
3、类继承,这时就可以通过访问修饰符去限制继承和可访问权限。 我们先通过一个表大概了解一下有哪些修饰符以及它们对外部类和子类的可见性,如表8.1所示。成员访问修饰符成员访问修饰符对外部类是否可见对外部类是否可见对子类是否可见对子类是否可见public是是private否否protected否是default否是轻松学Java之继承与多态8.2 访问修饰符 这些修饰符修饰的父类和子类的继承关系大致如图8.6所示。轻松学Java之继承与多态8.2.1 public访问修饰符 用public修饰的类成员(包括字段和方法)称为公有的,公有成员允许Java系统中所有的类访问,外界可以直接存取公有数据,调用公
4、有方法。轻松学Java之继承与多态8.2.2 private访问修饰符 用private修饰的类成员称为私有的,类的私有成员只能被这个类的方法直接访问。轻松学Java之继承与多态8.2.3 protected访问修饰符 用protected修饰的类成员称为被保护的。类的被保护成员允许其子类继承。如果一个类有派生子类,为了使子类能够直接继承父类的成员,则把这些成员(大部分是数据)说明为被保护的。轻松学Java之继承与多态8.2.4 default访问修饰符 如果类成员前面没有任何关键字修饰,则称为默认的。默认的类成员除了允许被其归属的类访问外,还允许同一个包中的其他类访问。轻松学Java之继承与
5、多态8.3 方法的覆盖 方法的覆盖也是我们经常会遇到的情况。所谓“覆盖”,就是方法名称相同,但却在不同的场合做不同的事。当一个子类继承一个父类中的方法的名称、参数、类型等都完全一致时,就称子类中的这个方法覆盖了父类中的方法。同样,如果子类中重新定义了父类中已有的字段,则称子类的字段覆盖了父类中的字段。轻松学Java之继承与多态8.3.1 方法的覆盖格式 方法覆盖的语法格式如图8.11所示。轻松学Java之继承与多态8.3.2 super关键字 在Java的方法覆盖中我们经常要用到一个特殊的关键字super关键字。super关键字的主要功能是完成子类在覆盖了父类中的方法后,调用子类所复制的父类的
6、字段和方法。其语法格式如图8.13所示。 我们还可以使用super调用父类中的构造方法,这也是super在程序中经常要用到的作用。轻松学Java之继承与多态8.3.3 几种不能使用方法覆盖的情况 并不是所有的方法都是可以被覆盖的。有时我们也需要子类不能覆盖父类的方法。一般情况下,有三种方法不能被子类覆盖,分别是:static方法、final方法和final类中的方法。为了使大家更好地理解这三种情况,我们分别举一个例子来说明。 1. static方法 2. final方法 3. final类中的方法轻松学Java之继承与多态8.4 多层继承 我们在前面提到了在Java中类不可以进行多重继承,但是
7、是可以进行多层继承的。对于多层继承,Java也只允许单继承,即一个子类只能有一个父类。当然,一个父类有多个子类也是允许的。图8.20所示的多重继承就是错误的。轻松学Java之继承与多态8.4 多层继承 一般的多层继承的语法格式如图8.22所示。 例如,给定三个类A、B和C。C是B的一个子类,而B又是A的一个子类。当这种类型的情形发生时,每个子类继承它的所有父类的属性。这种情况下,C继承B和A的所有方面。轻松学Java之继承与多态8.5 多态 在前面的章节中我们已经为大家介绍了面向对象的封装性和继承性。这一节我们继续为大家讲解Java最后一个也是非常重要的特性多态。轻松学Java之继承与多态8.
8、5.1 多态的基本概念 什么是多态呢?多态的本质是:一个程序中同名的不同方法。在面向对象的程序中,多态可以表现在很多方面,例如可以通过子类对父类方法的覆盖实现多态,也可以通过一个类中方法的重载实现多态,还可以将子类的对象作为父类的对象实现多态。轻松学Java之继承与多态8.5.3 方法的重载 方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可,在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定义。轻松学Java之继承与多态8.5.3 方法的重载 在方法重载时
9、,我们一定要注意重载时参数类型和个数匹配问题。Java在遇到这类问题时,总是会按照赋值规则的。赋值规则我们前面讲过,就是低精度的数值可以赋值给高精度的变量;而高精度的值却不能赋给低精度的变量。例如,我们可以将一个int值赋给一个double变量,却不能将一个double值赋给一个int变量,如图8.26所示。轻松学Java之继承与多态8.5.4 对象引用实现多态 对象的引用型变量是具有多态性的,因为一个引用型变量可以指向不同形式的对象,即:子类对象可以作为父类对象来使用。 我们可以举一个现实中的例子,在一个单位中,有职工(employee);职工中又有少数人是管理者(manager),管理者中又有一部分是领导。轻松学Java之继承与多态8.6 小结 本章主要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州大学《全媒体新闻写作与编辑》2023-2024学年第一学期期末试卷
- 贵州财经职业学院《办公室空间设计》2023-2024学年第一学期期末试卷
- 贵阳幼儿师范高等专科学校《高分子材料分析测试与研究方法》2023-2024学年第一学期期末试卷
- 2025黑龙江省安全员考试题库
- 贵阳信息科技学院《现代基础医学概论Ⅰ》2023-2024学年第一学期期末试卷
- 硅湖职业技术学院《社会网络分析》2023-2024学年第一学期期末试卷
- 贵阳学院《微生物基因工程》2023-2024学年第一学期期末试卷
- 2025年安徽建筑安全员-A证考试题库附答案
- 广州新华学院《学术规范与科技论文写作车辆》2023-2024学年第一学期期末试卷
- 广州卫生职业技术学院《语文课堂教学技能与微格训练》2023-2024学年第一学期期末试卷
- 2023-2024学年浙江省富阳市小学数学五年级上册期末通关试题
- TTAF 092-2022 移动终端融合快速充电测试方法
- GB/T 9410-2008移动通信天线通用技术规范
- GB/T 5343.2-2007可转位车刀及刀夹第2部分:可转位车刀型式尺寸和技术条件
- GB/T 32285-2015热轧H型钢桩
- GB/T 13772.2-1992机织物中纱线抗滑移性测定方法模拟缝合法
- SVG运行与维护课件
- 企业大学商学院建设方案
- 部编人教版 六年级下册道德与法治课堂作业(含答案)
- 幼儿园大班数学:《长颈鹿的水果店》 课件
- 独生子女证明(模板)
评论
0/150
提交评论