




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章Java开发综合实战面向对象编程核心技术计算机专业·任务驱动应用型教材01继承与多态继承与多态实现继承子类可以继承父类原有的属性和方法,也可以增加自己特有的属性和方法。例如,正方形是一种特殊的四边形,正方形类继承了四边形类的所有属性和方法(例如4条边,4个角),还增加了一些正方形类特有的属性和方法(例如4条边相等,4个角都为直角)。继承与多态实现继承在类的声明中,使用关键字extends声明一个类继承另一个类,即定义一个子类,语法格式如下:子类名称extends父类名称例如,下面的语句表示正方形类Square(子类)继承四边形类Quadrangle(父类):publicclassSquareextendsQuadrangle{//类体Chiftery继承与多态实现继承一个类可以有多个子类,子类又可以作为父类派生其他子类。Java的类按继承关系形成树状结构,根节点是java.lang.Object类。也就是说,Java的所有类都直接或间接继承自Object类。继承与多态方法重写在一般情况下,父类的成员会被子类继承,子类对象在调用继承的方法时,调用的是父类的实现。如果需要对继承的方法进行不同的实现,则要重写父类的成员方法。继承与多态方法重写重写(Override)也称为覆盖,是指在子类中定义一个方法,该方法的名称和参数列表与父类的成员方法相同,但修改或重新编写了实现内容、返回值类型或访问权限修饰符。也就是说,在Java中重写方法必须满足以下两个条件:●子类方法名称和父类方法名称相同。●子类方法的参数类型、个数、顺序与父类的成员方法完全相同。继承与多态操作隐藏的父类成员如果子类声明的成员变量与从父类继承的成员变量同名,或者在子类的方法中定义了与父类成员变量同名的局部变量,子类就会隐藏所继承的父类成员变量。如果子类重构了父类的成员方法,即子类有与父类方法同名的方法(相同的方法名、参数列表和返回值类型),则在子类范围内,父类方法被隐藏。继承与多态操作隐藏的父类成员关键字super有两个功能:调用父类的成员变量和成员方法;调用父类的构造方法。语法格式如下。●super.变量名:调用父类的成员变量。●super.方法名(参数列表):调用父类的成员方法。●super(参数列表):调用父类的有参构造方法。如果没有参数,则调用父类的无参构造方法,此时该语句可以省略。继承与多态使用final关键字关键字final表示不可改变,不仅可修饰类,还可修饰类的成员方法和成员变量。语法格式如下:(1)修饰类。(2)修饰类的成员方法。(3)修饰类的成员变量。继承与多态使用方法重载实现多态方法重载(Overload)是面向对象编程的多态特性的一种表现形式,具体是指在同一个类中定义多个名字相同但参数不同的方法。同一个方法名是对外的统一接口,参数列表不同导致内部实现也不同。继承与多态使用方法重载实现多态在Java中,重载方法必须满足以下条件:●方法名相同,包括字母大小写。●方法的参数列表必须不同,可以是参数的类型、个数或顺序不同。●方法的返回值类型、修饰符可以相同,也可以不同。继承与多态使用方法重载实现多态值得一提的是,在重载构造方法时,在构造方法的第1句中可以使用关键字this调用本类的其他构造方法,语法格式如下:this(参数列表)继承与多态对象向上转型如果一个类有很多子类,并且这些子类都重写了父类中的某个方法,当把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个向上转型对象。由于不同的子类在重写父类的方法时可能产生不同的行为,因此向上转型对象在调用这个方法时就具有多种形态。02抽象类与接口抽象类与接口抽象类与抽象方法Java使用关键字abstract修饰抽象类。抽象类在继承体系中常位于顶层,不能被实例化。在抽象类中使用关键字abstract修饰的方法称为抽象方法。语法格式如下:抽象类与接口抽象类与抽象方法抽象类中可以包含成员变量、构造方法、抽象方法和具体方法中的全部项或部分项。读者需要注意的是,抽象方法在方法头结尾处直接以分号结束,没有方法体,也没有定义方法体的一对花括号公。通常用于描述方法具有的功能,而不提供具体功能的实现。而对于具体方法来说,即使方法体为空,花括号目也不能省略。抽象类与接口声明与实现接口如果一个抽象类中的所有方法都是抽象方法,就可以使用接口来定义这个类。接口是一系列抽象方法的声明集合,是一个完全抽象的类,没有方法的实现,具体实现由实现接口的类确定。因此这些方法可以在不同的地方被不同的类实现,从而表现出不同的行为(功能)。抽象类与接口声明与实现接口接口的访问权限可选值为public,如果被省略,则使用默认的访问权限。接口体中可以定义成员变量和成员方法,由于变量默认均为publicstaticfinal类型,即静态常量,因此必须显式地对其进行初始化。接口中的方法默认都是publicabstract类型的抽象方法。抽象类与接口声明与实现接口接口是建立类与类之间的协议的一种形式,没有具体实现,在使用前需要先定义一个类,使用关键字implements表明该类实现某个或某些接口,语法格式如下:抽象类与接口声明与实现接口Java使用关键字interface声明接口,语法格式如下:抽象类与接口声明与实现接口类实现接口实质上是一种继承,一个类可以实现多个接口,从而能实现多重继承,语法格式如下:03内部类内部类成员内部类所谓成员内部类,就是被定义在一个类内部,作为类的成员的类。定义成员内部类的语法格式如下:内部类成员内部类其中,OuterClass类是外部类,InnerClass类是内部类。成员内部类可使用static、public、protected和private修饰,而外部类只能使用public或默认修饰符修饰。需要注意的是,在成员内部类中不能定义静态变量。内部类成员内部类与创建普通的类对象相同,成员内部类对象也使用关键字new创建;与普通类不同的是,成员内部类的对象实例化操作必须在外部类或外部类的非静态方法中实现。如果在外部类中初始化一个成员内部类对象,成员内部类对象就会被绑定在外部类对象上。内部类成员内部类如果要在外部类和非静态方法之外直接实例化成员内部类对象,可以采用以下语法格式:外部类.内部类内部类对象=new外部类().new内部类();内部类成员内部类从上面的语法格式中可以看到,当直接实例化成员内部类对象时,必须首先获取相应的外部类对象,然后利用外部类对象进行成员内部类对象的实例化操作。成员内部类一旦编译成功,就会成为和相应的外部类完全不同的两个类。内部类局部内部类如果内部类被定义在一个类的方法或者一个作用域中,则被称为局部内部类。与成员内部类的区别在于,局部内部类可看作方法中的一个局部变量,因此不能有public、protected、private及static修饰符,其访问权限也仅限于方法内或者该作用域内。内部类局部内部类内部类匿名内部类匿名内部类是在接口和抽象类的应用上发展起来的。所谓匿名内部类,就是没有具体名称的内部类,通常用于将类体非常小(只有简单几行),并且只需要使用一次的类作为参数传递给方法,以实现一个接口或继承一个类。在Swing编程中,经常使用这种方式绑定事件,编写事件监听的代码,不仅方便,而且代码容易维护。内部类匿名内部类在Java中创建匿名内部类的语法格式如下:内部类匿名内部类由于类的构造方法名称必须与类名相同,而匿名内部类没有类名,因此匿名内部类没有构造方法,使用范围非常有限。一般来说,匿名内部类用于继承其他类或实现接口,只是对继承方法的实现或重写,并不需要增加额外的方法。内部类Lambda表达式Lambda表达式是指应用在SAM(SingleAbstractMethod,含有一个抽象方法的接口)环境下的一种简化定义形式,用于简化匿名内部类的定义结构。在Java中,Lambda表达式的基本语法格式如下://定义方法体(参数,参数,…)->{方法体);(参数,参数,…)->语句;//直接返回结果内部类Lambda表达式本案例首先从Console窗格中获取要进行加法运算的两个整数,然后利用Lambda表达式输出这两个整数的计算结果。通过本案例演示Lambda表达式的使用方法。内部类Lambda表达式(1)在Java项目InnerClass中定义一个接口LambdaExpression,声明一个抽象方法compute()。具体代码如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江农林大学《体育统计学(含体育测量与评价)》2023-2024学年第二学期期末试卷
- 《归去来兮辞》教学设计 2023-2024学年统编版高中语文选择性必修下册
- 天津理工大学中环信息学院《有毒有害物质检测》2023-2024学年第二学期期末试卷
- 中国美术学院《财务信息系统》2023-2024学年第二学期期末试卷
- 西藏警官高等专科学校《全媒体新闻评论》2023-2024学年第二学期期末试卷
- 大连科技学院《工程项目管理A》2023-2024学年第二学期期末试卷
- 广西工商职业技术学院《制药分离工程》2023-2024学年第二学期期末试卷
- 重庆交通大学《会计信息系统(一)》2023-2024学年第二学期期末试卷
- 泸州四川泸州市国有土地上房屋征收补偿中心(泸州市物业管理中心)招聘编外人员笔试历年参考题库附带答案详解
- 泰州2025年江苏泰州市第四人民医院招聘合同制人员27人笔试历年参考题库附带答案详解
- 美团外卖骑手服务合同(2025年度)
- 应急预案解读与实施
- 2025年春季学期团委工作安排表
- 2025年《国有企业领导人员腐败案例剖析》心得体会样本(3篇)
- 广告行业安全培训详细介绍
- 2024-2029年全球及中国氨能源(绿氨)应用可行性研究与投资战略规划分析报告
- 2025福南平市建武夷水务发展限公司招聘21人高频重点提升(共500题)附带答案详解
- 2025年上半年工业和信息化部装备工业发展中心应届毕业生招聘(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 2024年广州市海珠区卫生健康系统招聘事业单位工作人员笔试真题
- 一科一品一骨科护理
- 加气站安全培训课件
评论
0/150
提交评论