版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七组
2015.11.12
第七章继承与多态要点继承和多态的基本概念派生类的声明和使用Super关键字构造方法的继承和条用类成员变量的继承和隐藏类方法的重写抽象类和抽象方法密封类和密封方法接口的声明和使用多态继承概述继承:是面向对象程序设计的只要特征之一
允许重用现有类(基类(baseclass),亦称超类(superclass);父类(parentclass))创建新类(子类(subclass),亦称派生类(derivedclass);孩子类(childclass))的过程。
子类将继承基类的所有数据和行为,还可以定义其他数据或行为。继承的类型:
类继承和接口继承继承的层次关系:在JAVA中,说有的类都继承与Object.类的继承不仅限于一个层次,即基类可以派生出自己的子类,子类又可以派生出自己的子类;如:交通工具可以分为汽车,飞机,火车等;飞机又可分为战斗机,客运机;火车又可分为动车组,高速列车等;汽车按功能又可分为越野车,旅游车,跑车等。但JAVA中语言的类不支持重继承,因而,所有类的集合形成如下图的树状继承层次关系。继承概述ObjectCharacterBooleanNumberByteShortIntegerLongFloatDoubleString继承的层次关系简单类型封装类的继承层次关系继承派生类的声明Super关键字类成员的继承构造方法的继承和调用类成员变量的隐藏类方法的重写抽象类和抽象方法密封类和密封方法派生类的声明
在声明派生类时,可以指定要继承的类(即基类);如果在类定义中没有指定基类,则Object是基类,派生类使用关键字extends指定要继承的基类;派生类声明的基本形式:[类修饰符]class类名[extends基类]{
类体;}Extends是用来实现继承JAVA不支持多重继承,即一个派生类只能继承于一个基类。classPoint{//基类。等同于classPointextendsObjectintx,y;}classColoredPointextendsPoint{//派生类,从Point派生intcolor;}classColored3dPointextendsColoredPoint{//派生类,从ColoredPoint派生intz;}派生类的声明Point是ColoredPoint和Colored3dPoint的基类Point是ColoredPoint的直接基类;
ColoredPoint是Colored3dPoint的直接基类;ColoredPoint和Colored3dPoint是Point的派生类;ColoredPoint是Point的直接派生类;Colored3dPoint是ColoredPoint的直接派生类;Super关键字Super关键字:
主要功能是完成子类在覆盖了父类中的方法后调用子类所复制的父类的字段和方法。用于从派生类中访问基类成员。(1).指定创建派生类实例时调用的基类构造方法;
Super(参数)(2).调用基类上已被其他方法重写的方法;
Super.方法(参数)(3).访问基类的数据成员;
Super.字段名注:Super关键字只能在实例构造方法,实例方法或实例访问器中使用。实例:classPerson{publicStringname;publicintage;publicPerson(Stringname,intege){=name;this.age=age;}publicvoidprint(){System.out.printf("name=%s,age=%d",,this.age);}}classStudentextendsPerson{publicStringstudentID;publicStudent(Stringname,intage,Stringid){super(name,age);this.studentID=id;}publicvoidprint(){super.print();System.out.printf(",studentID=%s,",this.studentID);}}classSuperDemo{publicstaticvoidmain(String[]args){Studentobjstudent=newStudent("张三",25,"2007101001");objstudent.print();}}最后运行结果:实例:类成员的继承派生类继承基类中除构造方法以外的成员。即派生类继承其基类(包括基类的超类)的所有成员(除构造方法以外),与基类成员的修饰符无关;基类成员的访问修饰符仅仅限制该成员的可见范围。构造方法的继承和调用
构造方法不能被继承,也不能被覆盖,因为构造方法的名称与类名相同。通过关键字new创建对象实例,会根据传入的参数调用相匹配的构造方法,在调用构造方法前,需要先调用其基类的构造方法。三个如果:如果使用派生类的默认构造方法构造对象实例,则会自动调其基类的默认构造方法;如果基类没有默认的构造方法,则会导致编译错误。如果使用派生类的其他构造方法(带参数)构造对象实例,则必须在派生类的构造方法的第一条语句中,显式地使用Super关键字调用其基类的构造方法,否则会产生编译错误。类成员变量的隐藏成员变量的隐藏:
派生类继承基类中的所有成员变量。如果在派生类中声明了与继承的成员变量同名的成员变量,则该重名成员变量将隐藏从基类继承的同名成员变量称为成员变量的隐藏。注:在派生类中引用该成员变量时,实际上引用的是派生类中声明的成员变量。如果需要引用从基类中继承的同名成员变量,可使用Super关键字:
Super.变量名隐藏示例:classParent{publicStringname;publicStringsex;publicvoidsetName(Stringname){=name;}}classChildextendsParent{publicStringname;publicChild(Stringname,Stringsex){=name;this.sex=sex;=name+"'sparent";}publicvoidprint(){System.out.println(name+""+sex+""+);}}publicclassHiddenFieldDemo{publicstaticvoidmain(String[]args){Childobj1=newChild("Mary","E");obj1.print();Childobj2=newChild("Jack","E");="Jackie";obj2.sex="M";obj2.print();}}隐藏示例:运行结果如下所示:类方法的重写
派生类继承基类中的所有成员方法,同时也可以在派生类中定义新方法。1.全新方法:
方法的签名唯一,即与从基类继承的所有的方法签名均不相同。全新方法是派生类定义的新方法,即是对基类功能的一种扩展。
2.重载方法:方法名与从基类继承的方法重名,但二者的方法签名不同。
重载方法也是派生类定义的新方法,即是对基类功能的一种扩展。3.重写方法:方法签名与从基类继承的方法签名相同。重写方法隐藏从基类继承的相同签名的方法,重写方法提供该方法的新实现。抽象类和抽象方法
抽象类(abstractclass)
将关键字abstract置于关键字class的前面可以将类声明为抽象类。抽象类不能实例化。抽象类一般用于提供多个派生类可共享的级类的公共定义。例如:类库可以定义一个包含基本功能的抽象类,并要求程序员在使用该类库时,通过创建派生类来提供自己的类实现。
抽象类与非抽象类相比,具有下列特征:抽象类与非抽象类相比,具有下列特征:
(1)抽象类不能直接实例化,对抽象类使用new运算符号会导致编译错误。可以定义抽象类型的变量,但其值必须为null,或者是其派生的非抽象类的实例的应用。(2)抽象类不能被密封。(3)允许(但不要求)抽象类包含抽象成员。(4)当从抽象类派生非抽象类时,这些非抽象必须实现所继承的所有抽象成员,从而重写那些抽象成员。
例如:
AbstractclassAbstractClass{//声明类成员}抽象类和抽象方法抽象方法:在抽象类中通过将关键字abstract添加到实例方法的返回类型的前面定义抽象方法。抽象方法声明引入一个新的虚方法,但不提供该方法的任何实际实现,所以抽象方法的方法体只由一个分号去组成,而不是常规的方法块。注:除了构造方法,静态方法和私有方法不能声明为抽象方法外。其他任何方法均可声明为抽象方法密封类和密封方法密封类(finalclass):
通过将关键字final置于关键字class的前面,可以将类声明为最终类或密封类。注:密封类不能作为基类;也不能是抽象类。密封类主要用于防止非有意所的派生。密封类和密封方法FinalFinal修饰符主要用于防止非有意的派生,还能促使某些运行时的优化。FinalclassAbstractClass{//声明类成员}FinalabstractclassFinalAbstractClass{//编译错误,类不能同时为Fiinal和abstract//声明类成员}密封类和密封方法密封方法(finalmethod):当实例方法包含final修饰符时,称该方法为最终方法,也称为密封方法。使用final修饰符可以防止派生类进一步重写该方法。二.接口接口的声明一个接口定义一个协定。接口本身不提供它所定义的成员的实现,只指定实现该接口的类必须提供的成员,继承接口的任何非抽象类型都必须实现接口的所有成员。
接口类似抽象基类,不能被实例化。接口中声明的所有成员方法隐式的为public和abstract.接口可以包含抽象方法和静态常量字段。接口声明的基本形式如下:[接口修饰符]interface
接口名[extends
基接口列表]{接口体}[;]
接口的成员接口通常是公共契约,故一个接口中可以声明零个或者多个成员,但只能包含其他的签名,接口的成员包括从基接口继承的成员和由接口本身声明的成员,接口成员只能包含抽象方法和静态常量字段。
接口的成员变量默认为静态常量字段(publicstaticfinal),但接口的成员变量不能带除publicstaticfinal以外的任何修饰符。
接口的成员方法默认为公共抽象方法(publicabstract),但接口的成员方法不能带除publicabstract以外的任何修饰符,应为默认为公共抽象方法(publicabstract),所以建议不要带任何修饰符。接口的实现接口的实现可以由类来实现。为了指示类实现了某种接口,在该类或结构的基类列表中应该包含该接口的标识符。派生类使用关键字implements指定要实现的基接口列表。派生类实现接口的声明的基本形式如下:[类修饰符]class类名[implements基接口列表]{
类体;}
在实现接口的非抽象中,必须实现从基接口中继承的所有抽象成员,从而重写这些抽象成员。类中的对应重写成员方法必须是公共的、非静态的,并且与接口成员方法具有相同的签名。
interfaceIDimensions{floatgetLength();floatgetwidth();}classBoximplementsIDimensions{floatlength;floatwidth;Box(floatlength,floatwidth){this.length=length;this.width=width;}publicfloatgetLengtf(){returnwidth;}}publicclassInterfaceDemo{publicstaticvoidmain(String[]arge){Boxbox1=newBox(30.0f,20.0f);System.out.printf("Length:%9.2f,Width:%9.2f",box1.getLength(),box1.getWidth());}}接口实现案例接口的继承接口可以从零个或多个接口继承,被继承的接口称为该接口的基接口。
接口使用关键字extends指定要继承的接口,接口继承声明基本形式如下:
[接口修饰符]intenface接口名[extends基接口列表]{类体;
}
接口成员包括从基接口继承的成员和由接口本身声明的成员,故实现该接口的类必须实现接口本身声明的成员以及该接口继承的成员。
三.多态多态的概念通过继承实现多态通过方法重载实践多态性通过方法重写实现多态性多态性综合举例多态多态的概念
在面向过程的程序设计中,函数不能重名,否则会产生歧义,从而导致编译错误;而在面向对象设计中,有时需要利用“重名”来提高程序的抽象度和简洁性。派生类对象可以表示多个类型的能力,成为多态性。多态的概念类方法多态性的实现的两种方式:(1).方法重载:可以声明多个同名但参数的个数,类型和顺序不同的方法。编译时根据参数(个数,类型和顺序)判定采用的方法。这种编译时确定的模式,又称为“静态绑定”。(2).方法重写:派生类声明与从基类继承的方法签名一致
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Vue.js前端开发与框架原理综合题库
- 党纪知识测试题
- 2026高血压养生幸福感提升课件
- 2026中医养生药材种植指导课件
- 统编版八年级语文上册文学名著阅读理解测试卷(含答案解析)
- 2026年信息安全专升本密码学真题单套试卷
- 2026年自学考试数学与应用数学专业概率论与数理统计单套真题试卷
- 统编版八年级英语上册Unit1基础语法测试卷(含答案解析)
- 高血压与遗传因素
- 2026年非金属矿物制品业轻质隔墙板发展趋势研究
- GA/T 2329-2025法庭科学虹膜图像相似度检验技术规范
- 5.1 建立良好的公共秩序 第一课时 课件2025-2026学年统编版道德与法治 五年级下册
- 2026二建《建设工程施工管理》精讲课程讲义
- 《铁路建设项目标准化管理手册》
- 2025年浙江省中考社会真题卷含答案解析
- 赣州市2025年“十万英才聚赣南”事业单位招聘高层次急需紧缺专业技术人才备考题库(郑州站)及参考答案详解
- 2025电梯安装单位电梯安装质量安全风险日管控、周排查、月调度管理制度
- 2025年10月自考15040习概论试题及答案
- 2026高考物理模型讲义:电磁感应中的单导体棒模型(解析版)
- 2025年对外经济贸易大学事业编专职辅导员其他专技人员招聘试题附答案
- 2025高中历史时间轴完整版记忆手册
评论
0/150
提交评论