版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1类的继承机制4.2
super关键字4.3
方法重写4.4
final关键字4.5抽象类和接口客观世界中的事物都是普遍联系的。事物之间的联系可以划分为横向关联和纵向关联。横向关联是指同一历史时期的事物之间的联系,纵向关联是指不同历史时期的事物之间的联系。在Java编程中,一个类的对象可以作为另外一个类的成员,或者作为其成员方法的形参以及返回值,使得类与类之间形成了横向关联;同时,作为典型的面向对象编程语言,Java语言支持类之间的继承关系,这让类与类之间形成了纵向关联。Java类与类之间纵横交错的关联使得编程更加灵活,对客观事物的描述更加合理科学。4.1类的继承机制在面向对象的编程中,继承描述的是类与类之间的关系,它是面向对象编程最重要的特性。在Java语言中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类(也叫派生类),现有类被称作父类(也叫基类),子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。Java语言中,类的继承有以下几个特点:(1)Java类只支持单继承,不允许多继承。也就是说一个类最多只能有一个父类,这是Java类继承与C++类继承最大的区别。(2)一个类可以是多个类的父类。(3)Java允许多层继承,也就是说一个类既可以是某个类的子类,也可以同时是另一个类的父类。父类中只有被protected和public修饰的成员才能够被子类直接使用,或者父类与子类在同一个包内,子类对象也可以直接使用由default修饰的父类的成员。4.2super关键字Java类的继承机制中,子类并非继承了父类所有的成员,父类的构造方法是不能够被继承的。若父类的成员变量是私有的,那么在子类构造方法中就不能被访问。当创建子类对象的时候,可以使用子类的构造方法来对本类定义的成员变量进行初始化,却不能对继承而来的成员变量进行赋值。这个问题该如何解决呢?这就需要用到Java语言中的super关键字了。Java语言中的super关键字与this关键字有异曲同工之妙,它们都属于类对象的引用。区别在于:this关键字表示的是本类对象的引用,而super关键字表示的是父类对象的引用。两者在使用上也十分相似。在父类成员的访问权限允许的条件下,super关键字主要用于以下三个功能:使用super关键字直接调用父类的构造方法来初始化继承而来的成员变量,这样就解决了刚才的问题。由于JVM只有在实例化对象的时候才会自动调用类的构造方法,因此使用super调用父类的构造方法时,也必须写在子类的构造方法中,而且必须遵循以下语法要求:(1)super关键字调用父类构造方法的代码只能放在子类构造方法中的首句。由于super和this关键字调用构造方法时都需要放在构造方法的首句,因此一个构造方法中不可以同时使用super和this关键字来调用各自类的构造方法,也不可以同时有两个super关键字调用父类构造方法的代码。(2)如果子类和父类中均没有显式的定义构造方法,那么系统会在子类的缺省构造方法里面调用父类的缺省构造方法。(3)如果子类中的构造方法没有显式调用父类的构造方法,那么系统将自动为其调用父类无参的构造方法。(4)如果父类中定义了有参的构造方法,且子类构造方法中没有使用this调用自己的构造方法,那么在该构造方法中必须直接调用父类有参的构造方法。(5)子类构造方法中出现了使用this关键字调用本类另一个构造方法时,不可以再使用super关键字直接调用父类的构造方法,但总能够通过本类其他的构造方法来调用父类的某个构造方法。4.3方法重写在Java语言中提供了重写父类方法的机制,通常称为方法覆盖或方法复写。此时在子类对象调用speek方法时,JVM运行的是子类中自定义的speek方法。如果还需要调用从父类继承而来的speek方法时,使用super关键字在子类方法内调用即可。在Java语言中将第一种实现方式叫作对象的浅复制,将第二种实现方式叫作对象的深复制。浅复制使得两个对象共用一个数据空间,而深复制是两个对象有各自独立的数据空间,数据空间中的属性值完全相同。浅复制后,任意改变其中一个对象的值,另一个对象的值也随之改变;深复制后两个对象的值完全独立没有关联。由此可知,深复制的代码安全性会更高,建议采用深复制的形式。4.4final关键字到Java语言中的常量分为字面常量和字符常量。其中字面常量就是常数,它是具体的一个数字、字符或者字符串;而字符常量是一个标识符,它代表了一个数值,同时不能够被改变。其实字符常量本质就是值不能被修改的变量,使用final关键字来修饰,因此也叫作final变量,或称自定义常量。在Java语言中的final关键字表示“最终的”“不可改变”的意思,它既可以用来修饰基本数据类型变量,也可以用来修饰引用数据类型变量。此外,final关键字还可以用来修饰成员方法和类。4.4.1final关键字修饰变量变量根据它的作用域可分为局部变量和类的成员变量。局部变量通常是一个方法内临时定义的变量或方法的形参。final在修饰局部变量和类的成员变量时有些区别。1.final关键字修饰局部变量当final关键字修饰局部变量时,该变量在定义时可以不被初始化,但是使用之前,必须完成初始化且只能初始化一次,后续在使用的时候不可以再修改它的值。2.final关键字修饰成员变量final关键字在修饰成员变量时,它要在所在类对象创建之前完成初始化,且只能被初始化一次。它的初始化方法有以下三种:(1)直接赋值(2)在构造方法中将其初始化(3)在构造代码块中将其初始化不论通过哪种方式初始化final成员变量,在使用中都不可以再修改它的值。通常,被final修饰的成员变量是所有对象共有的,也就是静态成员变量,它的定义方式为:这种成员变量如果被public修饰符修饰,那么它就是全局可见的静态常量。全局静态常量可以直接使用类名访问,不可修改,在Java程序中经常用到。它可以在创建的时候直接初始化,也可以通过静态代码块对其进行初始化。4.4.2final关键字修饰方法当final关键字用来修饰方法时,该方法不允许在派生类中进一步被重写。4.4.3final关键字修饰类当final关键字修饰一个类时,则该类会成为最终类,即该类不能被继承,但是该类可以有父类。final类在官方定义的类库中出现得比较多,如String类、Integer类等。4.5抽象类和接口4.5.1抽象类在Java编程中,父类的方法经常被子类重写,以实现更加具体化的功能。有时候不需要创建父类的对象,只是使用子类的对象编写程序,那么在父类中被重写的方法只需要给出方法的声明即可,方法的主体没有存在的价值。在Java语言中,这种只有声明、没有主体的方法被称为抽象方法。需要注意的是,类的构造方法不可以被声明为抽象方法。当一个类中包含了抽象方法时,那么这个类就是抽象类,在类声明的时候,关键字class之前必须用abstract修饰。抽象类具有以下几个特点:(1)抽象类中可以没有抽象方法,但有抽象方法的类必须声明为抽象类;(2)抽象类中可以定义成员变量、成员方法和构造方法;(3)可以声明抽象类的对象,该对象可以被赋值为null,但该对象不可以被实例化;(4)抽象类可以继承一个类,抽象类的父类可以是抽象类也可以是非抽象类。通常,抽象类主要用作父类使用,子类通过extends关键字继承抽象类。抽象类的子类必须实现父类中的抽象方法,除非该子类也是一个抽象类。4.5.2接口Java语言引入了接口的概念。Java接口是一种抽象类型,是抽象方法和静态常量的集合。Java接口除了抽象方法和静态常量之外不可以再定义其他类型的成员。Java接口可以声明一个对象,但不可以对其直接进行实例化,即使该接口中没有定义抽象方法。一个类只能继承一个父类,但可以同时实现多个接口。接口使用Java关键字interface来声明,其语法格式为:接口里面可以只有静态常量或者抽象方法,也可以是空的。接口与类之间存在很多相似之处,主要有以下几点:(1)接口文件和类文件均保存在“.java”为扩展名的文件中;(2)接口和类的编译文件(字节码文件)均保存在后缀名为“.class”的文件中;(3)接口和类的编译文件同样也必须放在与包名相匹配的目录结构中;(4)接口和抽象类中均可定义抽象方法及静态常量。虽然接口与类有相类似的地方,但是它们属于不同的概念。类描述对象的属性和方法,接口则规定其实现类要实现的抽象方法及使用的静态常量。表4-5-1描述了接口与抽象类之间的主要区别。表4-5-1中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省郑州市中原区2024-2025学年上学期高三年级一测模拟演练 英语试卷(含答案无听力原文、答案及音频)
- 2025年度劳动合同员工福利待遇与补贴合同3篇
- 2024版标准汽车租赁合同协议
- 2024路边广告位使用权及城市美化工程合作合同3篇
- 2024项目开发全过程委托协议版B版
- 健康监护知识培训课件
- 福建省南平市建阳水吉中学2020-2021学年高三物理期末试卷含解析
- 2024男方离婚条件下的赡养费支付与房产分割合同3篇
- 2025年度冷链仓储行业员工劳动合同书3篇
- 2024版混凝土构件加工承揽合同
- 2024年杭州市中医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 经济职业技术学院教务教学管理制度汇编(2024年)
- 2024-2025学年人教版八年级数学上册期末测试模拟试题(含答案)
- ISO 56001-2024《创新管理体系-要求》专业解读与应用实践指导材料之15:“6策划-6.4创新组合”(雷泽佳编制-2025B0)
- 2025混凝土外加剂买卖合同
- 《环境感知技术》2024年课程标准(含课程思政设计)
- 2024年电影院项目可行性研究报告
- GB/T 45079-2024人工智能深度学习框架多硬件平台适配技术规范
- 福建省厦门市2023-2024学年高二上学期期末考试质量检测化学试题 附答案
- 假期师生读书活动方案2024年
- Unit 5 Dinner's ready Read and write(说课稿)-2024-2025学年人教PEP版英语四年级上册
评论
0/150
提交评论