收藏 分销(赏)

JAVA语言程序设计JAVAB5DACEE5D5C2-156.ppt

上传人:w****g 文档编号:2394108 上传时间:2024-05-29 格式:PPT 页数:25 大小:197.50KB 下载积分:10 金币
下载 相关 举报
JAVA语言程序设计JAVAB5DACEE5D5C2-156.ppt_第1页
第1页 / 共25页
JAVA语言程序设计JAVAB5DACEE5D5C2-156.ppt_第2页
第2页 / 共25页


点击查看更多>>
资源描述
JAVA语言程序设计语言程序设计JAVAB5DACEE5D5C2第第5章章 类类的的继继承性与多承性与多态态性性5.1 5.1 类类的的的的继继承承承承(Inherit)Inherit):继承承:指面向:指面向对象程序的两个象程序的两个类之之间的一种关系。的一种关系。当一个当一个类拥有另一个有另一个类的所有数据和操作的所有数据和操作时,就,就称称这两个两个类之之间有有继承关系。承关系。被被继承的承的类叫叫父父类、超超类或或基基类(SuperClass、BaseClass)继承了父承了父类所有属性和方法的所有属性和方法的类叫叫子子类(SubClass)继承承实现了了软件的重用。件的重用。图:汽汽车类的的继承关承关系系图:面向面向对象技象技术的的继承特点承特点一、一、一、一、继继承的概念承的概念承的概念承的概念第第5章章 类类的的继继承性与多承性与多态态性性注意:注意:1 1、Java规定:一个子定:一个子类只能有一个父只能有一个父类(单重重继承承)2 2、抽象抽象类:只定:只定义一些状一些状态和和实现部分行部分行为 小小小小结结:利用利用利用利用继继承的机制承的机制承的机制承的机制组织组织、设计设计系系系系统统中的中的中的中的类类,可以提,可以提,可以提,可以提高程序的抽象程度高程序的抽象程度高程序的抽象程度高程序的抽象程度(接近人接近人接近人接近人类类的思的思的思的思维维方式方式方式方式)、提高程序提高程序提高程序提高程序的开的开的开的开发发效率、降低效率、降低效率、降低效率、降低维护维护的工作量的工作量的工作量的工作量第第5章章 类类的的继继承性与多承性与多态态性性二、二、二、二、继继承关系的定承关系的定承关系的定承关系的定义义 由由extends 完成完成继承关系承关系的定的定义,它界定了父子,它界定了父子类的关系的关系 作用作用:继承可以使子承可以使子类获得父得父类所有非私有属性所有非私有属性和方法和方法 几个几个须注意的注意的问题:父父类与子与子类的关系是相的关系是相对的的 子子类只能有一个父只能有一个父类且必且必须有一个父有一个父类(单重重继承承)子子类可以可以继承父承父类中所有非中所有非private属性和方法属性和方法 对继承的理解承的理解应扩展到整个父展到整个父类的分支的分支(如如toString()方法方法)类类的的的的继继承关系承关系承关系承关系图图第第5章章 类类的的继继承性与多承性与多态态性性 举例:例:public class MyA1 extends java.applet.Applet public class MyApplication extends Frame public class MyApp1 extends Object public class MyApp2三、成三、成三、成三、成员变员变量的量的量的量的继继承和承和承和承和隐隐藏藏藏藏 1 1、成、成、成、成员变员变量的量的量的量的继继承承承承 子子子子类类可以可以可以可以继继承父承父承父承父类类的所有非私有域的所有非私有域的所有非私有域的所有非私有域(变变量、量、量、量、对对象象象象)例例例例5 51 1:成:成:成:成员变员变量的量的量的量的继继承承承承练习练习:找出例:找出例5 51 1中各个中各个类类中所有的域中所有的域(变变量、量、对对象象)第第5章章 类类的的继继承性与多承性与多态态性性 2 2、成、成、成、成员变员变量的量的量的量的隐隐藏藏藏藏 成成成成员变员变量的量的量的量的隐隐藏:子藏:子藏:子藏:子类对类对从父从父从父从父类继类继承来的成承来的成承来的成承来的成员变员变量重新加以定量重新加以定量重新加以定量重新加以定义义举举例例例例1 1:成:成:成:成员变员变量的量的量的量的隐隐藏藏藏藏 注意:注意:注意:注意:A、子子类中有同名成中有同名成员变量量 a)有从父有从父类中中继承来的属性承来的属性 b)子子类中自己定中自己定义的与父的与父类同名的属性同名的属性第第5章章 类类的的继继承性与多承性与多态态性性 B、同名属性的使用同名属性的使用 a)当引用指向父当引用指向父类的属性的属性时,调用的是父用的是父类的属性的属性 b)子子类执行行继承父承父类的方法的方法时,操作的操作的时父父类的属的属性性 c)子子类执行自定行自定义的方法的方法,处理的是自定理的是自定义的属性的属性举举例例例例2 2:成:成:成:成员变员变量的量的量的量的隐隐藏藏藏藏第第5章章 类类的的继继承性与多承性与多态态性性四、成四、成四、成四、成员员方法的方法的方法的方法的继继承和覆盖承和覆盖承和覆盖承和覆盖 1 1、方法的、方法的、方法的、方法的继继承承承承(Hidden)Hidden)子子类不需要定不需要定义就可以就可以拥有父有父类的所有非私有属的所有非私有属性性方法的方法的方法的方法的继继承承承承举举例例例例 2 2、方法的覆盖、方法的覆盖、方法的覆盖、方法的覆盖(Overload)Overload)覆盖:在子覆盖:在子类中直接定中直接定义和父和父类同名的方法同名的方法 特点:子特点:子类与父与父类同名方法中的形参及返回同名方法中的形参及返回值相相同,但方法体不同同,但方法体不同例例例例5 52 2:成:成:成:成员员方法的覆盖方法的覆盖方法的覆盖方法的覆盖第第5章章 类类的的继继承性与多承性与多态态性性 应注意的注意的问题:方法的覆盖将清除父方法的覆盖将清除父类方法占用的内存,从而方法占用的内存,从而使父使父类方法在子方法在子类中不存在中不存在如如toString()(与成与成员变量的量的隐藏比藏比较)由于覆盖由于覆盖现象是同名方法分象是同名方法分别属于不同的属于不同的类,所以要用不同的所以要用不同的类名或名或对象名象名调用用 在子在子类中重新定中重新定义方法方法时,要保持与父,要保持与父类完全完全相同的方法名、返回相同的方法名、返回值和参数列表和参数列表第第5章章 类类的的继继承性与多承性与多态态性性 子子类不能覆盖父不能覆盖父类的的final方法;也不能覆盖父方法;也不能覆盖父类的的static方法,但可以方法,但可以隐藏父藏父类的的static方法方法 非抽象子非抽象子类必必须覆盖父覆盖父类的抽象方法。的抽象方法。五五五五、this this和和和和supersuper this this与与与与supersuper是是是是经经常用来指代父常用来指代父常用来指代父常用来指代父类类和子和子和子和子类对类对象的象的象的象的关关关关键键字。字。字。字。Java系系统默默认:每个:每个对象都缺省地具有象都缺省地具有null、this和和super 这三个量。所以在任意三个量。所以在任意类中都可以不中都可以不加加说明地使用它明地使用它们第第5章章 类类的的继继承性与多承性与多态态性性 1 1、thisthis 对象的引用:象的引用:对象的另一个名字(象的另一个名字(别名)。名)。当一个当一个类被被实例化成一个例化成一个对象象时,this 就是就是对象象名的另一种表示。名的另一种表示。代表当前代表当前类或当前或当前对象本身象本身(当前当前对象的引用象的引用)2 2、supersuper 代表当前代表当前对象的直接父象的直接父类对象象 super 是当前是当前对象的直接父象的直接父类对象的引用象的引用(别名名)直接父直接父类:指当前:指当前类直接直接继承的承的类第第5章章 类类的的继继承性与多承性与多态态性性例例:publicpublic doubledouble length()length()intint x1=x1=supersuper.x;x;intint y1=y1=supersuper.y;.y;intint x2=x2=thisthis.x;.x;intint y2=y2=thisthis.y;.y;例例例例5 53 3:thisthis和和和和supersuper的用法的用法的用法的用法P.94P.94的的的的说说明明明明第第5章章 类类的的继继承性与多承性与多态态性性 使用中注意:使用中注意:若子若子类隐藏父藏父类的属性,的属性,则在子在子类中中则不加引不加引用的属性一定是子用的属性一定是子类属性;若要使用父属性;若要使用父类属性属性则必必须用用super引用引用 若有覆盖方法,子若有覆盖方法,子类中中调用父用父类的同名覆盖方的同名覆盖方法法时,也要加,也要加super 引用引用举举例:例:例:例:supersuper的的的的应应用用用用例例例例5 54 4:supersuper举举例例例例SuperSuper()()()()举举例例例例第第5章章 类类的的继继承性与多承性与多态态性性 注:注:this 和和 super 是属于是属于类的特有属性,它的特有属性,它们只能用来代表当前只能用来代表当前对象或当前象或当前对象的直接父象的直接父类对象,象,所以它所以它们不能像不能像类的其他属性一的其他属性一样随便引用随便引用D200_Card my200=D200_Card my200=newnew D200_Card();D200_Card();my200.my200.thisthis.getBalance();/.getBalance();/错误错误my200.my200.supersuper.getBalance();/.getBalance();/错误错误第第5章章 类类的的继继承性与多承性与多态态性性5.2 5.2 类类的多的多的多的多态态(Polymorphism)Polymorphism):多多态:是指一个是指一个类中同名的不同方法共存的中同名的不同方法共存的现象。象。类的多的多态体体现在方法的重在方法的重载(Overload)上。重上。重载包括成包括成员方法和构造方法的重方法和构造方法的重载一、成一、成员方法的重方法的重载(Override):同一同一类中定中定义同名的不同内容的方法叫同名的不同内容的方法叫重重载(以以形式参数的不同来区分不同的方法形式参数的不同来区分不同的方法)要注意与覆盖的区要注意与覆盖的区要注意与覆盖的区要注意与覆盖的区别别:覆盖是:覆盖是:覆盖是:覆盖是继继承中的承中的承中的承中的现现象象象象-子子子子类类对继承自父承自父类的方法重新定的方法重新定义叫覆盖。叫覆盖。第第5章章 类类的的继继承性与多承性与多态态性性 即:在子即:在子类中定中定义和父和父类同名的方法,但重新同名的方法,但重新编写方法体写方法体(例如:例如:performDial()方法方法)。特点:同名的不同方法在不同的特点:同名的不同方法在不同的类中,使用中,使用时应指明指明调用的是哪个用的是哪个类中的方法中的方法(或由系或由系统自自动调用用)区区别:重重载:同名(不同参数)的方法在同一个:同名(不同参数)的方法在同一个类中。中。依靠参数区分不同的方法(利用不同的参数依靠参数区分不同的方法(利用不同的参数调用)。用)。覆盖:同名(相同参数)的方法在不同的覆盖:同名(相同参数)的方法在不同的类中。中。使用是依靠不同的使用是依靠不同的类名或名或对象名象名调用。用。举举例:打印功能的重例:打印功能的重例:打印功能的重例:打印功能的重载载例例例例5-55-5:对对不同的数排序不同的数排序不同的数排序不同的数排序第第5章章 类类的的继继承性与多承性与多态态性性一、成一、成员方法的重方法的重载(Override):构造方法的重构造方法的重载:在一个在一个类里有多个具有不同形里有多个具有不同形式参数的构造方法,它式参数的构造方法,它们以不同的方式以不同的方式对对象象进行初行初始化。始化。构造方法是构造方法是类的一种特殊方法,它既可以从父的一种特殊方法,它既可以从父类继承,也可以相互重承,也可以相互重载。举举例:构造函数的重例:构造函数的重例:构造函数的重例:构造函数的重载载例例例例5 56 6:构造函数的重:构造函数的重:构造函数的重:构造函数的重载载第第5章章 类类的的继继承性与多承性与多态态性性 小小结:覆盖和重覆盖和重载体体现了面向了面向对象程序象程序设计中多中多态特性特性.但它但它们的概念和使用是不同的的概念和使用是不同的,具体区具体区别如如下下:方法的覆盖是子方法的覆盖是子类与父与父类间方法的关系;方方法的关系;方法的重法的重载是同一个是同一个类内部多个方法内部多个方法间的关系的关系 覆盖方法有相同的方法名、形参表和返回覆盖方法有相同的方法名、形参表和返回值;重重载方法不能有相同的形参表方法不能有相同的形参表 覆盖方法的覆盖方法的调用是利用不同的前用是利用不同的前缀(类、对象象前前缀);重;重载方法的方法的调用是利用不同的用是利用不同的实际参数参数 用用final 修修饰的方法是不能被覆盖的,但它可的方法是不能被覆盖的,但它可以被重以被重载继继承承树树汽汽车类车类汽汽油油机机车车 辆机机 动 车非机非机动车内内燃燃机机车电 车人人 力力 车畜畜 力力 车柴柴油油机机车有有轨电车无无轨电车自自 行行 车手手 推推 车牛牛 车马 车面向面向对对象技象技术术的的继继承特点承特点有卡号有卡号电话卡卡卡号、密卡号、密码、接入号、接通接入号、接通登登录交交换机机电话磁卡磁卡变量:量:使用地域使用地域拨打打电话电话IC卡卡变量量拨打打电话IP 卡卡有效日期有效日期拨打打电话200 卡卡变量:量:附加附加费修改密修改密码、拨打打电话继承继承继承承继承 电话卡卡变量:量:剩余金剩余金额方法:打方法:打电话、查余余额无卡号无卡号电话卡卡对应电话机型号机型号获得得电话机型号机型号继承 变量:量:电话卡及其子卡及其子类的的层次关系次关系树电话电话卡卡卡卡类类无卡号无卡号无卡号无卡号类类有卡号有卡号有卡号有卡号类类ICIC卡卡卡卡磁卡磁卡磁卡磁卡200200卡卡卡卡IPIP卡卡卡卡校园校园校园校园201201卡卡卡卡创建建变量与量与创建建对象示意象示意图512内存内存int i_a=5,i_b=12int i_a=5;int i_b=12;Class Mc int a=5;float b=10.0;int getA Mc A=new Mc();Mc B=new Mc();510.0int getA 510.0int getA 优点:不同点:不同对象的相同代象的相同代码可同可同时运行运行类类的的继继承关系承关系A 类类B 类类C 类类B1 类类B2 类类B11类类B21 类类B22 类类B221类类Object接口的概念接口的概念车 辆飞 机机船船喷气气飞机机非机非机动车汽汽 车柴油柴油轮船船交通工具交通工具帆帆 船船可燃油的可燃油的可提成的接口及其可提成的接口及其实现类实现类职 工工 普普通通职工工 提提 成成 部部 门 主主 管管 秘秘 书 销 售售 人人 员
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服