- 1、本文档共34页,可阅读全部内容。
- 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章(Java面向对象编程下)多态
广西机电职业技术学院 计算机与信息工程系 多态 继承是指从一个基类(父类)派生出派生类(子类)的过程; 继承使用关键字extends; 对于类成员,可以使用public、protected、缺省和private这4种访问权限修饰符; 对于类,可以使用public和缺省这2个访问权限; 创建子类实例时,必须先执行父类的构造方法,然后再执行子类的构造方法; super关键字有两种主要用途,都与父类有关。 回顾 本章相关词汇(蓝色为关键字) 单 词 说 明 abstract 抽象,抽象的 interface 接口,界面 implements 实现 final 最终的,决定性的 polymorphism 多态,多态性 casting 转型 overridden method 方法覆盖 本章目标 方法覆盖 引用转型 了解多态,在Java中实现多态 抽象方法和抽象类,abstract关键字 接口和实现接口,interface关键字和implements关键字 final关键字 类与类之间的关系(补充) 父/子类中的同名成员 上次课在讲述super关键字时,提到了父类和子类中存在同名成员的情况; 如果是同名属性(即成员变量同名),那么可以通过this和super显式地区分开来; 如果是同名方法(即成员方法同名),情况将会相对复杂。 父/子类中成员方法仅仅同名 class BaseClass {//定义基类 public void fun() { …… //具体实现代码略 } } class DerivedClass extends BaseClass {//派生类继承于基类 public void fun(int x) {//跟父类中有相同名称的方法 …… //具体实现代码略 } } /*如果仅仅只是名称相同,但参数列表不同的话,则构成方法重载*/ 父/子类中成员方法同原型 class SuperClass {//定义父类 public void fun() { …… //具体实现代码略 } } class SubClass extends SuperClass {//子类继承于父类 public void fun() {//与父类中的方法完全同原型 …… //具体实现代码略 } } /*如果不但名称相同,而且连方法原型也完全相同的话,则构成方法覆盖*/ 方法覆盖 在类的继承体系结构中,如果子类中出现了与父类中有同原型的方法,那么认为子类中的方法覆盖了父类中的方法(也称为方法重写); 通过子类的实例调用被覆盖的方法时,将总是调用子类中的方法,而父类中的方法将被隐藏。 方法覆盖示例 class ParentClass { //定义父类 public void fun() { System.out.println(这是父类中的方法。); } } class ChildClass extends ParentClass {//子类继承于父类 public void fun() { //子类覆盖父类中的方法 System.out.println(这是子类中的方法。); } } class OverriddenTest { //用于容纳main方法 public static void main(String[] args) { ParentClass parObj = new ParentClass(); parObj.fun(); //父类的实例调用此方法 ChildClass chiObj = new ChildClass(); chiObj.fun(); //子类的实例调用此方法 } } 区分方法覆盖和方法重载 方法覆盖(重写)和方法重载是两个极易混淆的概念,必须严格区分; 方法覆盖出现的前提条件之一是必须有继承发生的情况下,而且要求父类和子类中的方法必须同原型; 方法重载时,继承并不是必需的,它只要求方法名称相同,而参数列表则必须不同,换言之,各方法的原型其实是不同的。 引用转型 基类的引用可以指向派生类的对象,如: BaseClass obj = new DerivedClass(); 这样的语句是合法的; 但是派生类的引用则不可以指向基类的对象,如: DerivedClass obj = new BaseClass(); 这样的语句将引发错误。 引用转型示例 class Person { //定义人类 …… } class Student extends Person { //学生类继承于人类 …… } public
您可能关注的文档
- java实现银行家算法.doc
- 策略模式实现对数据的排序.doc
- java基础题目.doc
- 山大(威海)java 课件 第五章.ppt
- 第六章(理论).ppt
- Java2第4章.ppt
- 算法分析与设计(第2版)动态规划.ppt
- 18 编写字符界面应用(上).ppt
- JavaEE物联网云计算系列培训教材-Java基础04.ppt
- 无锡科院考JAVA题库2.ppt
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)