电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap4

67页
  • 卖家[上传人]:E****
  • 文档编号:89447420
  • 上传时间:2019-05-25
  • 文档格式:PPTX
  • 文档大小:686.42KB
  • / 67 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第4章 继承和多态,第五章,目录,4.1 继承,4.1.1 继承的基本概念 4.1.2 java继承的实现 4.1.3 方法覆盖 4.1.4 成员隐藏,继承,顾名思义,就是将父亲的东西继承过来,成为己有。Java中所谓继承,就是程序员在构造类时,把实体中相同的部分先抽象出来定义为一个类,如果需要新类,在不改变原类的基础上再增加新的内容,构造成一个新类,新类可以继承原类的所有非私有的数据成员和方法。原类称为基类、超类或父类;新类称为派生类或子类。举个例子:如果已经充分认识了马的特征,现在要叙述“白马”的特征,显然就不必从头介绍什么是马,而只是说明“白马是白色的马”即可。“白马”继承了“马”的基本特征,又增加了新的特征颜色,“马”是父类,或称为基类、超类,“白马”是从“马”派生出来,称为子类或派生类。生活中继承的例子随处可见。如图4-1所示是现实生活的几类动物。,4.1 .1 继承的基本概念,正是因为有了继承,自然界的一切生物才保持了物种的延续。面向对象语言中,也正是因为有了继承,才可以支持更丰富、更强大的建模,使得代码重用、软件质量有了更稳定的提高,程序结构清晰,降低编码和维护的工作量。

      2、 在Java语言中,引入继承机制,使类间具有严格的层次体系。例如,电话卡可以定义一个类,它又可以细分为无卡号电话卡类和有卡号电话卡类,无卡号电话卡类又可以进一步细划成IC卡和磁卡;无卡号的电话卡可以细划成201卡、200卡、900卡等。作为电话卡,它们都有余额和支费、显示余额等特性,而无卡号电话卡类和有卡号电话卡它们又有自己的特性,如有卡号电话卡一般还需要有卡号和密码,而无卡号的电话卡则不需要这些信息,就能拨打对方号码。它们的类层次结构如图4-2所示。,图4-2 电话卡类层次图,图4-2中, 粗体部分:从父类中继承的数据成员或方法,其余为自己新增加的数据成员或方法。无卡号电话卡和有卡号电话卡是电话卡的子类,它们继承了父类电话卡的数据成员balance和方法performDial ()、getbalance(), 在此基础上,无卡号电话卡添加了自己的数据成员phoneSetType、方法getSetType();有卡号电话卡添加了自己的数据成员connect、cardnumber、password、方法connect()。 进一步细划,无卡号电话卡又IC卡和磁卡电话卡两个子类,它继承了父

      3、类的balance、phoneSetType数据成员和performDial ()、getbalance()、getSetType()方法,添加了自己的方法showbalance();有卡号电话卡派生出IP、200电话卡两个子类,它继承了父类的balance、cardnum 、connect 、password数据成员和performDial ()、connect()、getbalance()方法,分别添加了自己的数据成员expireDate、additoryFee。各类之间建立继承关系后,有了父类,在定义子类时,只需添加新增属性,父类中的属性通过继承直接获取。,从图中可以得出以下结论: (1)如果类B是类A的子类,则类B继承了类A的数据成员和方法。在子类B类中,包含了两部分内容:从父类A中继承下来的数据成员和方法以及自己新增的数据成员和方法。 (2)继承是可以传递的。如果C从B派生,而B从A派生,那么C就会既继承在B中声明的成员,又继承在A中声明的成员。这样,子类的属性个数总比父类的属性个数多,可以说子类是更具体的实例。 (3)Java中规定,直接父类只能有一个,也就是说Java只支

      4、持单继承。这是Java独特于其他面向对象语言的地方(譬如,C+支持多继承)。 (4)派生可以扩展它的直接父类,添加新的成员,但不能移除父类中定义的成员。,4.1.2 java继承的实现,客观世界中,特殊类对象共享一般类对象的状态及行为,称为子类继承父类的特性。语言中,子类可以继承父类的数据成员(属性)和方法,还可以增加自己特有的数据成员(属性)和方法。 1. 创建子类 继承发生在父类和子类之间,用extends关键字来实现。子类定义的格式如下: 类修饰符 class 子类名 extends 父类名 类体 【例4-1】定义一个员工类Employee,再定义一个部门经理类Manager,根据员工的类别显示信息。,运行结果如图4-3所示:,图4-3 例4-1运行结果,2this和super关键字 两个关键字都是用来指代类,this指代本类,super指代父类,可以在引用类的成员中使用它们。this和super在内存中的引用关系,如图4-4所示,图4-4 this和super在内存中的引用关系图,前面的示例中,已多次使用了这两关键字。它们通常有以下两个作用。 (1)调用构造方法 类在定义重载构

      5、造方法时,经常使用this和super这两个关键字,以省略构造方法中重复的代码段,使得代码的可重用性提高,程序也更加简捷。this关键字指代本类中的其他构造方法。super关键字指代父类中的其他构造方法。,【例4-3】使用this关键字定义构造方法。,这里使用关键字this来指代本类中的name属性和本类的Employee(String name)构造方法。在定义带有两个参数的构造方法Employee(String name,Int age)时,调用已定义好的带有一个参数的构造方法Employee(String name)。,(2)调用其他方法 在定义类的方法时,需要调用类的中已定义的其他方法,这时经常使用this和super关键字,分别调用类的其他方法或使用类的数据成员。譬如,【例4-3】在定义类的方法时,就多次使用了this指向它的数据成员name、age。实际上,在类方法中Java自动用this关键字把所有变量和方法引用结合在一起,所以this可以完全省略不写。,在定义子类中的方法时,如果还想使用父类中的某个方法,或子类中的某个方法与父类的某个方法说明(指名称、参数和返回值类型)

      6、一样,在子类中要使用自己的方法,这时如果还想使用父类的方法 3Object类 一个类如果在声明时没有明确使用extends来标记自己派生于哪个类,那么编译器将自动将Object类作为该类的父类,因此,所有的类最终都来自Object类,其实Object类是Java预定义的所有类的父类,它处在类目录的最高层,是所有Java类的根类。不论一个类有没有明确指定父类,都可以看作是从Object类直接或间接派生来的。Object类包含了所有Java类的公共属性,这个类中定义的方法可以被任何类的对象使用或继承。,就需要使用super关键字。,4.1.3 方法覆盖,使用类的继承关系,子类可以具有父类定义的所有可继承的方法,自然也可能添加自己新的字段和方法,因为他反映了新的需求,但有时继承于父类的某些方法实现并不适合或并不能满足子类中的特征,而又希望保持和父类一致,这时需要修改继承于父类的方法,保持方法所用的名称、返回类型及参数列表和父类中的保持一致,只修改方法的实现代码,这一过程称为子类对父类方法的重写。就如同前面刚讲过的其他类对父类Object类中的方法toString()和equals()的重写一

      7、样。 方法重写是面向对象程序设计中非常重要的手段,几乎所有可用的程序都离不开方法重写,包括重写系统提供的类库中的方法或者重写其他人提供的方法。应用重写时必须注意以下两条重要原则。 (1)保持方法返回值类型、方法名称、参数的个数、顺序和类型不变。 (2)新方法的访问范围可以保持不变、扩大,但不能小可缩小。例如下面代码是不正确的代码。,4.1.4 成员隐藏,前面提到通过继承,子类将继承父类的所有非私有的数据成员和方法。如下代码所示:,4.2 多态,4.2.1 多态概念的理解 4.2.2 java中的多态,4.2.1 多态概念的理解,多态,顾名思义,一个实体具有多种形态。 现实生活中存在这样一些现象:一类对象,能完成相同的功能,但这些功能对于不同的对象又有不同的特性。如钢琴和扬琴都是乐器,都能弹奏,但两种乐器的弹奏方法却是不同的。 在面向过程的程序设计过程中,我们只能采用不同的函数名来实现了。因为面向过程的程序设计,要求一个源程序中不能有同名函数或过程出现,每一过程和函数各自完成一定的功能,否则在调用时,就会产生歧异和错误。而在面向对象程序设计中,为提高程序的抽象度和简洁性,有时却需要利用同

      8、名的方法来代表这种不同的功能。面向对象中的这种现象也称为多态。 一般地,多态是指面向对象程序中一个程序中同名的不同方法共存的情况,或者一个对象不同时刻所属类型不同的情况。,4.2.2 java中的多态,在面向对象的程序设计中,很多方面表现出多态,例如同一个类中方法的重载,子类对父类方法的覆盖,还可以是子类对象作为父类对象的使用。 1. 子类对象作为父类对象的使用 在Java语言中,可以将子类对象看作父类对象来使用。就如同现实生活中,可以将一个“狗”视为是一个“动物”,将一个“钢琴”视为是一个“乐器”一样。在定义类的一个引用时,这个引用既可以指向本类的实例,也可以指向其子类的实例,所以说Java中引用型变量具有多态性。 在继承关系的子类和父类中,使用时应注意以下几点: (1)子类对象可以作为父类对象使用。 (2)子类对象作为父类对象使用时,父类对象只能对自己类中拥有的数据成员和方法以及被子类重写的方法进行操作,不能对子类的新增的普通方法进行操作。,(3)这种转换是单向的,即只能是将子类对象视为父类对象,不能将父类对象视为子类对象。这如同能说“狗”是“动物”,但不能说“动物”是“狗”一样。

      9、如特别需要将父类对象视为子类对象使用时,必须使用如下语句格式: 子类类名 子类变量=(子类类名)父类变量; 进行强制类型转换。类似于在基本类型中,double a=88.9 ; int b=(int)a;将双精度实型转换成整型一样。 (4)子类与父类的相互转换常应用于方法参数的传递。如形参为父类对象,在调用方法时可以给方法传递一个子类对象。 2. 子类对父类方法的覆盖 通过继承关系,子类可以重写从父类继承来的方法,当重写父类方法后,子类从父类继承的同名方法将被覆盖,也就是说,子类对象只调用自己重写的同名方法,而父类的方法只能由父类对象间接调用。要想实现覆盖,子类与父类的同名方法的方法头(返回值类型、方法名、参数)应完全相同。否则不能实现方法覆盖。,3. 同一个类中方法的重载 子类对父类方法的覆盖是发生在子类与父类两个类之间,Java中也允许在同一类中出现两个同名方法,这种技术称为方法的重载,实现方法重载要求,在同一类中出现的方法名相同,但方法的参数(类型、个数、顺序)中必须有一项与另一方法不同;若仅方法的返回值类型不同,方法名、方法参数(类型、个数、顺序)相同或者两同名方法出现在不同类中,不能实现方法重载。 Java中方法的覆盖与方法的重载,都是同名方法实现不同的功能的情形,在不同时刻相同方法名表现不同的形态,所以说它们也是Java中的两种多态。实际上,Java中许多地方体现了出现多态,如前面讲到的this和super关键字,也是典型两种的多态,它们随当前操作对象的不同而指向不同。面向对象程序设计中,这些方式的引入,有效地扩展了程序的功能,简化了程序的理解。,4.3 包及访问控制,4.3.1 包及其使用 4.3.2 访问控制 4.3.3 类、数据成员和方法的访问 控制,4.3.1 包及其使用,包对于Java系统来说非常重要,实际上包是有唯一命名的类的集合,它将开发者认为相关的类分组管理。Java提供了标准类的体系结构、第三方软件包,它也允许开发人员自己创建的包,来管理自己编写的类。 1. 包的创建 创建一个包非常简单,在Java源文件的最开始处使用“package”关键词来建立一个新的包,建立包的语句格式如下: package 包名; package定义了一个类存放的命名空间,所有使用相同包名称的类都被放在这个包中。如果没有p

      《Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap4》由会员E****分享,可在线阅读,更多相关《Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap4》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.