JAVA语言程序设计JAVABDACEE.ppt_第1页
JAVA语言程序设计JAVABDACEE.ppt_第2页
JAVA语言程序设计JAVABDACEE.ppt_第3页
JAVA语言程序设计JAVABDACEE.ppt_第4页
JAVA语言程序设计JAVABDACEE.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA语言程序设计,电子教案,胡杰,二00五年九月六日,第5章类的继承性与多态性,5.1类的继承(Inherit):,继承:指面向对象程序的两个类之间的一种关系。当一个类拥有另一个类的所有数据和操作时,就称这两个类之间有继承关系。,被继承的类叫父类、超类或基类(SuperClass、BaseClass)继承了父类所有属性和方法的类叫子类(SubClass),继承实现了软件的重用。,图:汽车类的继承关系,图:面向对象技术的继承特点,一、继承的概念,第5章类的继承性与多态性,注意:1、Java规定:一个子类只能有一个父类(单重继承)2、抽象类:只定义一些状态和实现部分行为,小结:利用继承的机制组织、设计系统中的类,可以提高程序的抽象程度(接近人类的思维方式)、提高程序的开发效率、降低维护的工作量,第5章类的继承性与多态性,二、继承关系的定义,由extends完成继承关系的定义,它界定了父子类的关系,作用:继承可以使子类获得父类所有非私有属性和方法,几个须注意的问题:父类与子类的关系是相对的子类只能有一个父类且必须有一个父类(单重继承)子类可以继承父类中所有非private属性和方法对继承的理解应扩展到整个父类的分支(如toString()方法),类的继承关系图,第5章类的继承性与多态性,举例:publicclassMyA1extendsjava.applet.AppletpublicclassMyApplicationextendsFramepublicclassMyApp1extendsObjectpublicclassMyApp2,三、成员变量的继承和隐藏,1、成员变量的继承子类可以继承父类的所有非私有域(变量、对象),例51:成员变量的继承,练习:找出例51中各个类中所有的域(变量、对象),第5章类的继承性与多态性,2、成员变量的隐藏,成员变量的隐藏:子类对从父类继承来的成员变量重新加以定义,举例1:成员变量的隐藏,注意:A、子类中有同名成员变量a)有从父类中继承来的属性b)子类中自己定义的与父类同名的属性,第5章类的继承性与多态性,B、同名属性的使用a)当引用指向父类的属性时,调用的是父类的属性b)子类执行继承父类的方法时,操作的时父类的属性c)子类执行自定义的方法,处理的是自定义的属性,举例2:成员变量的隐藏,第5章类的继承性与多态性,四、成员方法的继承和覆盖,1、方法的继承(Hidden),子类不需要定义就可以拥有父类的所有非私有属性,方法的继承举例,2、方法的覆盖(Overload),覆盖:在子类中直接定义和父类同名的方法,特点:子类与父类同名方法中的形参及返回值相同,但方法体不同,例52:成员方法的覆盖,第5章类的继承性与多态性,应注意的问题:方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类中不存在如toString()(与成员变量的隐藏比较)由于覆盖现象是同名方法分别属于不同的类,所以要用不同的类名或对象名调用在子类中重新定义方法时,要保持与父类完全相同的方法名、返回值和参数列表,第5章类的继承性与多态性,子类不能覆盖父类的final方法;也不能覆盖父类的static方法,但可以隐藏父类的static方法非抽象子类必须覆盖父类的抽象方法。,五、this和super,this与super是经常用来指代父类和子类对象的关键字。,Java系统默认:每个对象都缺省地具有null、this和super这三个量。所以在任意类中都可以不加说明地使用它们,第5章类的继承性与多态性,1、this,对象的引用:对象的另一个名字(别名)。当一个类被实例化成一个对象时,this就是对象名的另一种表示。,代表当前类或当前对象本身(当前对象的引用),2、super代表当前对象的直接父类对象,super是当前对象的直接父类对象的引用(别名)直接父类:指当前类直接继承的类,第5章类的继承性与多态性,例:publicdoublelength()intx1=super.x;inty1=super.y;intx2=this.x;inty2=this.y;,例53:this和super的用法,P.94的说明,第5章类的继承性与多态性,使用中注意:若子类隐藏父类的属性,则在子类中则不加引用的属性一定是子类属性;若要使用父类属性则必须用super引用若有覆盖方法,子类中调用父类的同名覆盖方法时,也要加super引用,举例:super的应用,例54:super举例,Super()举例,第5章类的继承性与多态性,注:this和super是属于类的特有属性,它们只能用来代表当前对象或当前对象的直接父类对象,所以它们不能像类的其他属性一样随便引用,D200_Cardmy200=newD200_Card();my200.this.getBalance();/错误my200.super.getBalance();/错误,第5章类的继承性与多态性,5.2类的多态(Polymorphism):,多态:是指一个类中同名的不同方法共存的现象。类的多态体现在方法的重载(Overload)上。重载包括成员方法和构造方法的重载,一、成员方法的重载(Override):同一类中定义同名的不同内容的方法叫重载(以形式参数的不同来区分不同的方法),要注意与覆盖的区别:覆盖是继承中的现象-子类对继承自父类的方法重新定义叫覆盖。,第5章类的继承性与多态性,即:在子类中定义和父类同名的方法,但重新编写方法体(例如:performDial()方法)。特点:同名的不同方法在不同的类中,使用时应指明调用的是哪个类中的方法(或由系统自动调用),区别:重载:同名(不同参数)的方法在同一个类中。依靠参数区分不同的方法(利用不同的参数调用)。覆盖:同名(相同参数)的方法在不同的类中。使用是依靠不同的类名或对象名调用。,举例:打印功能的重载,例5-5:对不同的数排序,第5章类的继承性与多态性,一、成员方法的重载(Override):,构造方法的重载:在一个类里有多个具有不同形式参数的构造方法,它们以不同的方式对对象进行初始化。,构造方法是类的一种特殊方法,它既可以从父类继承,也可以相互重载。,举例:构造函数的重载,例56:构造函数的重载,第5章类的继承性与多态性,小结:覆盖和重载体现了面向对象程序设计中多态特性.但它们的概念和使用是不同的,具体区别如下:方法的覆盖是子类与父类间方法的关系;方法的重载是同一个类内部多个方法间的关系覆盖方法有相同的方法名、形参表和返回值;重载方法不能有相同的形参表覆盖方法的调用是利用不同的前缀(类、对象前缀);重载方法的调用是利用不同的实际参数用final修饰的方法是不能被覆盖的,但它可以被重载,继承树汽车类,汽油机车,车辆,机动车,非机动车,内燃机车,电车,人力车,畜力车,柴油机车,有轨电车,无轨电车,自行车,手推车,牛车,马车,面向对象技术的继承特点,有卡号电话卡,卡号、密码、接入号、接通,登录交换机,电话磁卡,变量:使用地域,拨打电话,电话IC卡,变量,拨打电话,IP卡,有效日期,拨打电话,200卡,变量:附加费,修改密码、拨打电话,继承,继承,继承,继承,电话卡,变量:剩余金额,方法:打电话、查余额,无卡号电话卡,对应电话机型号,获得电话机型号,继承,变量:,电话卡及其子类的层次关系树,创建变量与创建对象示意图,5,12,内存,inti_a=5,i_b=12,inti_a=5;,inti_b=12;,ClassMcinta=5;f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论