博学实训软件工程JAVA面向对象第2章-继承和多态
《继承与多态》课件

游戏关卡设计
继承可以用于关卡设计,通过创 建关卡基类,派生出不同难度和 风格的子类,实现快速构建多种
关卡。
游戏AI设计
在游戏AI中,继承可以用于创建 具有不同行为和策略的敌人角色
,使得游戏更加丰富和有趣。
多态在GUI编程中的应用
事件处理
01
在GUI编程中,多态可以用于实现不同控件的事件处理函数,使
《继承与多态》ppt课件
• 继承的概念 • 多态的概念 • 继承的实现方式 • 多态的实现方式 • 继承与多态的应用场景 • 继承与多态的案例分析
01
继承的概念
什么是继承
继承是一种面向对象编程的重要概念,它允许一个类继承另 一个类的属性和方法。通过继承,子类可以继承父类的所有 属性和方法,并且可以扩展或覆盖它们。
得相同的函数可以处理不同控件的事件。
界面布局
02
通过多态,可以动态地改变控件的外观和行为,实现更加灵活
的界面布局。
自定义控件
03
多态可以用于创建自定义控件,使得控件具有更加丰富的属性
和行为。
继承与多态在软件工程中的应用
模块化设计
通过继承和多态,可以将软件系统划分为多个模块,每个 模块具有明确的职责和接口,提高软件的可维护性和可扩 展性。
在层次结构中,每个 类只能有一个父类, 但可以有多个子类。
04
多态的实现方式
方法的重载
方法的重载是指在同一个类中 ,方法名相同但参数列表(参 数类型、数量、顺序)不同的 方法。
重载方法允许我们使用相同的 方法名来定义多个方法,增强 了代码的可读性和可维护性。
重载方法可以根据不同的参数 列表进行区分,编译器会根据 实际传入的参数类型和数量自 动匹配相应的方法。
《java面向对象程序设计-继承和多态》教案

1. 理解继承的概念及其在Java中的应用。
2. 掌握如何使用extends关键字来实现继承。
3. 理解多态的概念及其在Java中的应用。
4. 掌握如何使用implements关键字来实现多态。
5. 能够运用继承和多态编写更加灵活和可扩展的Java程序。
二、教学内容1. 继承的概念和作用引入继承的概念,解释其作用和意义。
通过实例演示继承的效果。
2. 使用extends关键字实现继承介绍extends关键字的用法。
示例演示如何使用extends实现继承。
3. 多态的概念和作用引入多态的概念,解释其作用和意义。
通过实例演示多态的效果。
4. 使用implements关键字实现多态介绍implements关键字的用法。
示例演示如何使用implements实现多态。
5. 继承和多态的联合使用解释继承和多态联合使用的效果。
通过实例演示继承和多态的联合使用。
1. 采用案例教学法,通过具体的实例来讲解继承和多态的概念和使用方法。
2. 使用互动式教学法,鼓励学生积极参与讨论和提问,以加深对知识点的理解。
3. 使用代码演示和调试,让学生直观地看到继承和多态的效果。
四、教学步骤1. 引入继承的概念,解释其作用和意义。
2. 介绍extends关键字的用法,并通过示例演示如何使用extends实现继承。
3. 引入多态的概念,解释其作用和意义。
4. 介绍implements关键字的用法,并通过示例演示如何使用implements实现多态。
5. 示例演示继承和多态的联合使用。
五、教学评估1. 课堂练习:要求学生编写简单的Java程序,运用继承和多态来实现特定的功能。
2. 课后作业:布置相关的编程作业,要求学生运用继承和多态来解决实际问题。
3. 课堂讨论:鼓励学生积极参与讨论,提问和解答问题,以评估学生对知识点的理解程度。
六、教学内容(续)6. 继承和多态的应用场景分析实际编程场景中继承和多态的运用。
通过案例展示继承和多态如何提高代码的可复用性和可维护性。
JAVA-继承与多态PPT学习课件

5
2020年2月16日星期日
Java程序设计 EmployeeClass类与ManagerClass类的关系图
6
2020年2月16日星期日
Java程序设计
// file name:EmployeeClass.java
public class EmployeeClass {
// 雇员类
private String name;
9
2020年2月16日星期日
Java程序设计 ShapeClass类、RectangleClass类与 SquareClass类之间的关系类图
ShapeClass类是几何图元的通用类;矩形是一种特定的几何图元,因此, RectangleClass类应该是ShapeClass的子类;正方形是一种特殊的矩形, 所以SquareClass类是RectangleClass类的子类。
public double getSpecial() { ... }
public String toString() { ... }
}
8
2020年2月16日星期日
Java程序设计
举例:设计与几何图元有关的类。
问题分析:几何图元是指可以绘制的基本几何图形,例如矩形、正 方形、圆形、多边形等。鉴于篇幅的考虑,这里只考虑矩形与正方 形。 假设任何几何图元都有颜色与位置两个属性,因此应该将这些共有 特性定义在一个类中,它是顶层类;而矩形还应该有长、宽两个属 性,由于矩形是一种几何图元,所以它自然应该拥有几何图元的共 有特性,因此可以将矩形类设计为几何图元类的子类;因为正方形 是一种特殊的矩形,它的特殊性在于长与宽相等,所以应该将正方 形类设计为矩形的子类。
// 颜色属性
private Point place; // 位置属性
《java面向对象程序设计继承和多态》教案

《Java面向对象程序设计-继承和多态》教案第一章:引言1.1 课程简介本课程旨在帮助学生掌握Java面向对象程序设计中的继承和多态概念。
通过学习,学生将能够理解继承和多态的原理,并能够运用它们解决实际编程问题。
1.2 课程目标理解继承的概念和原理掌握如何使用继承来实现代码复用理解多态的概念和原理掌握如何使用多态来实现动态绑定第二章:继承2.1 继承的概念介绍继承的定义和作用解释为什么使用继承2.2 继承的语法介绍如何使用extends关键字实现继承解释继承中的构造函数和继承关系2.3 继承的实现演示如何使用继承来复用代码解释继承的层次结构和菱形继承第三章:多态3.1 多态的概念介绍多态的定义和作用解释多态的好处3.2 方法重写解释方法重写的概念和规则演示如何使用方法重写来实现多态3.3 方法重载解释方法重载的概念和规则演示如何使用方法重载来提高代码可读性第四章:继承和多态的案例分析4.1 案例一:动物和鸟类使用继承和多态来定义动物和鸟类的关系实现动物和鸟类的属性和方法4.2 案例二:形状和圆形使用继承和多态来定义形状和圆形的关系实现形状和圆形的属性和方法第五章:总结和练习5.1 课程总结回顾继承和多态的概念和原理强调继承和多态在面向对象程序设计中的重要性5.2 练习题提供一些练习题,以帮助学生巩固所学知识第六章:继承和多态的深入理解6.1 继承的类型解释接口继承和类继承的区别讨论继承的优点和缺点6.2 多态的应用探讨多态在日常编程中的应用场景分析多态如何提高程序的可扩展性和灵活性第七章:Java中的继承和多态实例7.1 继承实例:汽车和摩托车通过实例展示如何使用继承来创建汽车和摩托车类演示如何通过继承来扩展属性和方法7.2 多态实例:支付接口和具体的支付方式创建一个支付接口和多个具体的支付方式类演示如何使用多态来实现不同的支付方法第八章:继承和多态的陷阱与最佳实践8.1 继承的陷阱讨论继承可能带来的过度耦合问题解释如何避免继承的陷阱8.2 多态的陷阱分析多态可能导致的类型不匹配问题探讨如何安全地使用多态8.3 最佳实践提供使用继承和多态的最佳实践指南强调代码可读性和可维护性第九章:继承和多态在设计模式中的应用9.1 设计模式简介介绍设计模式的概念和重要性解释设计模式与继承和多态的关系9.2 继承和多态在设计模式中的应用案例通过案例分析展示继承和多态如何在设计模式中发挥作用讨论设计模式如何提高程序设计的质量和可复用性第十章:课程回顾与拓展学习10.1 课程回顾总结本课程的重点内容和关键概念强调继承和多态在实际编程中的应用10.2 拓展学习资源提供一些拓展学习的资源和建议鼓励学生继续深入学习面向对象程序设计的其他方面第十一章:继承和多态的实际应用案例11.1 案例分析:图形库的设计通过分析图形库的设计,展示继承和多态如何用于实现复杂的图形操作。
Java面向对象第二章

第二章继承1、继承的好处:(1)继承关系是传递的,可以隐式的获得属性和方法,可以构造,建立扩充新类的最有效的手段(2)继承简化了人对事物的描述,能够清晰图像相关类的层次结构关系(3)继承提高了代码的复用率,减少了代码冗余(4)继承通过一致性来减少模块间接口和界面,大大提高了程序的易维护性注:使用类都继承了object类,object类是使用类的基类(父类)2、为什么要使用继承:(1)方便修改(2)减少代码3、什么时候使用继承:子类和父类是is-a的关系4、如何使用继承:(1)编写父类:public Class 父类{//共有的属性和方法}(2)编写子类,使用extends关键字继承父类:public Class 子类extends 父类{//编写子类的属性和方法}5、Super 关键字:Super代表父类的对象,可以通过它来调用父类的属性和方法6、this关键字:this关键字代表当前类的一个对象7、包名必须写到第一行,使用package关键字生明,导包放到包名下面,使用import 关键字导包8、子类不能调用父类的东西:a)父类私有的属性b)不同包中的父类默认访问修饰符的属性c)构造方法9、访问修饰符:访问修饰符本类同包子类其他Private 可以默认(friendly) 可以可以Protected 可以可以可以public 可以可以可以可以10、继承的缺点:继承破坏了封装性,父类的属性一般使用protected修饰,子类的属性一般使用private修饰。
11、调用父类构造方法:a)调用空:super();b)调用非空:supre(参数列表);12、调用父类属性:Super.属性名;13、调用父类方法:Super.父类方法名();14、什么是方法的重写:a)方法的重写指的是父类中的方法和子类中的方法,方法名,参数列表,返回值类型都完全一样。
15、方法重写必须满足如下的要求:a)重写方法和被重写方法必须具有相同的方法名b)重写方法和被重写方法必须具有相同的参数列表c)重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类d)重写方法不能缩小被重写方法的访问权限16、super关键字的作用:a)在子类中可以通过super关键字来访问父类的成员b)Super必须是出现在子类中(子类的方法和构造方法中),而不是其他位置c)是访问父类成员,例如父类的属性、方法、构造方法d)注意访问权限的限制,例如无法通过super访问private成员17、继承条件下构造方法的调用规则如下:a)如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。
Java的面向对象编程掌握封装继承和多态

Java的面向对象编程掌握封装继承和多态Java的面向对象编程掌握封装、继承和多态Java是一种面向对象的编程语言,通过封装、继承和多态等特性,使得程序具有更好的可维护性、扩展性和重用性。
本文将深入探讨Java中的封装、继承和多态的概念以及它们的应用。
一、封装封装是面向对象编程中的一种核心概念,它将数据和操作数据的方法封装在一个类中,通过控制访问权限来保证数据的安全性。
封装可以隐藏内部实现细节,只暴露必要的接口给外部使用,从而提高代码的可维护性和可复用性。
在Java中,我们可以使用访问修饰符(public、private、protected)来控制类、成员变量和方法的访问权限。
例如,我们可以将成员变量声明为private,然后提供公共的getter和setter方法来访问和修改这些变量,这样就可以在不暴露内部实现的情况下,对外提供数据的访问接口。
二、继承继承是面向对象编程中的另一个重要概念,它允许我们创建一个新的类,从现有的类中继承属性和方法。
通过继承,我们可以实现代码重用,并且可以在子类中添加新的属性和方法,从而扩展已有的功能。
在Java中,我们使用关键字extends来实现继承。
子类可以继承父类中的非私有成员变量和方法,并且可以通过super关键字来调用父类的构造方法或方法。
通过继承,我们可以建立起一个类的类层次结构,其中父类是子类的通用形式,并且子类可以通过覆盖或重写父类的方法来实现不同的行为。
三、多态多态是面向对象编程中的又一核心概念,它提供了一种让同一个方法在不同对象上表现出不同行为的能力。
多态可以通过方法重载和方法重写来实现。
在Java中,我们可以通过父类的引用指向子类的对象,从而实现多态。
这里的关键是父类引用可以指向子类对象,而子类对象可以调用自己的方法,但是不能调用父类没有的方法。
通过多态,我们可以实现代码的灵活性和可扩展性,增加了程序的可维护性。
综上所述,封装、继承和多态是Java面向对象编程中的重要概念。
《java面向对象程序设计继承和多态》教案
《Java面向对象程序设计-继承和多态》教案一、教学目标1. 理解继承的概念和特点2. 掌握如何使用继承实现代码复用和扩展3. 理解多态的概念和特点4. 掌握如何使用多态实现动态绑定和灵活扩展5. 能够运用继承和多态解决实际编程问题二、教学内容1. 继承的概念和特点继承的定义继承的优点:代码复用、扩展性好继承的缺点:代码耦合度高、可读性下降2. 继承的实现继承的语法:extends关键字继承的访问权限:private、protected、public 继承的类型:单继承、多继承3. 多态的概念和特点多态的定义多态的优点:动态绑定、灵活扩展多态的缺点:性能开销、复杂性增加4. 多态的实现方法重写:override关键字方法重载:相同方法名、不同参数列表接口和实现:implements关键字5. 继承和多态的应用实例:动物类和鸟类的关系实例:形状类和圆形类的关系三、教学方法1. 讲解:通过PPT和代码示例讲解继承和多态的概念、语法和应用2. 演示:通过代码演示继承和多态的实现和效果3. 练习:让学生编写代码练习继承和多态的应用4. 讨论:分组讨论继承和多态的使用场景和注意事项四、教学环境1. 教室:equipped with projector and whiteboard2. 电脑:each student has access to a puter with Java Development Kit (JDK) installed3. 网络:stable internet connection for online resources五、教学评估1. 课堂参与:观察学生在课堂上的提问和回答问题的积极性2. 练习完成情况:检查学生完成练习的情况和代码质量3. 小组讨论:评估学生在讨论中的表现和团队合作能力4. 课后作业:布置相关的课后作业,评估学生的理解和应用能力六、教学活动1. 引入讨论:通过一个现实生活中的例子(如交通工具的分类)引入继承的概念。
面向对象的Java实现-继承和多态
第二章面向对象的Java实现-继承和多态本章目标掌握继承掌握super关键字掌握多态Java中的继承生活中的继承生活中,继承的例子随处可见,例如,在有关动物的概念中,存在着如图所示的关系。
图生活中的继承一般来讲,继承需要符合“is-a”的关系,相对来说,父类更通用、子类更具体。
子类除具有父类的一般特性(属性和行为)之外,还有自身特殊的特性,如图所示。
图子类的特性为什么需要继承我们先看一个实际问题,比如我们要开发ACCP教员类,其中教员分为Java教员以及.NET 教员,各自的要求如下:Java教员属性:姓名、所属中心;方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍。
.NET教员属性:姓名、所属中心;方法:授课(步骤:打开Visual studio 2005、实施理论课授课)、自我介绍。
程序代码:public class AccpJavaTeacher {private String name; // 教员姓名private String school; // 所在中心public AccpJavaTeacher(String myName, String mySchool) { name = myName;school = mySchool;}public void giveLession() {System.out.println("启动 Eclipse");System.out.println("知识点讲解");System.out.println("总结提问");}public void introduction() {System.out.println("大家好!我是" + school + "的" + name + ".");}}public class AccpDotNetTeacher {private String name; // 教员姓名private String school; // 所在中心public AccpDotNetTeacher(String myName, String mySchool) { name = myName;school = mySchool;}public void giveLession() {System.out.println("启动 Visual Studio 2005");System.out.println("知识点讲解");System.out.println("总结提问");}public void introduction() {System.out.println("大家好!我是" + school + "的" + name + ".");}}以上两个类的定义中存在重复着大量重复的代码,违背了“write once, only once”的面向对象编程原则。
《java面向对象程序设计继承和多态》教案
《Java面向对象程序设计-继承和多态》教案一、教学目标:1. 理解继承的概念及其在Java中的应用。
2. 掌握如何使用extends关键字来实现继承。
3. 理解多态的概念及其在Java中的应用。
4. 掌握如何使用implements关键字来实现多态。
5. 能够运用继承和多态编写更简洁、易维护的Java代码。
二、教学内容:1. 继承的概念和原理2. extends关键字的用法3. 多态的概念和原理4. implements关键字的用法5. 继承和多态的应用案例三、教学方法:1. 讲授:讲解继承和多态的基本概念、原理和用法。
2. 演示:通过示例代码展示继承和多态的应用。
3. 练习:让学生动手编写代码,加深对继承和多态的理解。
4. 讨论:分组讨论实际应用场景中如何使用继承和多态,分享心得。
四、教学准备:1. 讲义:提供详细的继承和多态概念、用法讲解。
2. 示例代码:准备继承和多态的示例代码。
3. 编程环境:确保学生能够使用IDE(如Eclipse、IntelliJ IDEA等)或文本编辑器进行代码编写。
五、教学步骤:1. 引入:简要介绍继承和多态的概念,激发学生的兴趣。
2. 讲解:详细讲解继承和多态的原理、用法,并通过示例代码进行演示。
3. 练习:布置练习题,让学生动手编写代码,巩固所学内容。
4. 讨论:组织学生分组讨论实际应用场景中如何使用继承和多态,分享心得。
5. 总结:回顾本节课所学内容,强调重点知识点。
6. 作业:布置课后作业,巩固所学知识。
六、教学评估:1. 课堂互动:观察学生在课堂上的参与程度,了解他们对继承和多态的理解程度。
2. 练习作业:评估学生的练习作业,检查他们对继承和多态的掌握情况。
3. 课后反馈:收集学生的课后反馈,了解他们对课堂内容的满意度和建议。
七、教学拓展:1. 深入讲解Java中的继承和多态的其他高级特性,如接口、抽象类、动态绑定等。
2. 通过案例分析,让学生了解继承和多态在实际项目中的应用和优势。
《java面向对象程序设计-继承和多态》教案
一、教学目标1. 理解继承的概念及其在Java中的实现。
2. 掌握如何使用继承来复用代码和实现接口。
3. 理解多态的概念及其在Java中的应用。
4. 掌握如何通过方法重写和接口实现来实现多态。
5. 能够运用继承和多态编写更加灵活和可扩展的Java程序。
二、教学内容1. 继承的概念和原理定义:继承是面向对象编程中的一种关系,允许一个类(子类)继承另一个类(父类)的属性和方法。
作用:实现代码复用,减少重复代码。
2. Java中的继承语法:class 子类extends 父类示例:通过一个简单的继承例子来展示如何使用继承。
3. 访问修饰符公共(public)、默认(default)、私有(private)和受保护(protected)修饰符在继承中的作用。
示例:演示不同修饰符对继承的影响。
4. 方法重写(Overriding)概念:子类重写父类中的方法。
规则:方法名、参数列表和返回类型必须与父类中的方法相同。
示例:通过一个例子展示如何重写方法,并解释其意义。
5. 多态的概念定义:多态允许一个接口具有多个不同的实现。
类型:编译时多态(静态多态)和运行时多态(动态多态)。
三、教学方法1. 讲授法:讲解继承和多态的基本概念。
2. 示例法:通过具体的代码示例来展示继承和多态的应用。
3. 互动提问:鼓励学生提问,并针对学生的疑问进行解答。
4. 练习法:提供练习题,让学生通过编写代码来加深对知识点的理解。
四、教学步骤1. 引入:通过一个现实生活中的例子(如交通工具)来引出继承的概念。
2. 讲解:详细讲解继承的语法和规则,并通过代码示例展示如何实现继承。
3. 演示:通过示例解释访问修饰符在继承中的作用。
4. 讲解:介绍方法重写的概念和规则,并通过示例展示如何重写方法。
5. 引入:通过一个图形绘制例子引入多态的概念。
6. 讲解:详细讲解多态的原理和应用,并通过代码示例展示多态的实现。
五、教学评估1. 课堂提问:通过提问了解学生对继承和多态的理解程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家信息化人才培养工程 (深圳博学)授权实训基地 使用继承优化设计
串讲:继承
使用继承修改后
分析
方便修改 代码
减少代码 量
国家信息化人才培养工程 (is-a 深圳博学 )授权实训基地 子类与父类是 关系
串讲:继承
使用继承
编写父类
[访问修饰符] class Pet { //公共的属性和方法
演示示例:instanceof的使用
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:多态的应用
上机中的主人类(Master)
//为宠物看病
public void cure(Pet pet) { if (pet.getHealth() < 50) pet.toHospital(); } //测试方法 Pet pet = new Dog(); pet.setHealth(20); Master master = new Master(); master.cure(pet);
Dog dog=(Dog)pet;//将pet 转换为Dog类型 dog. catchingFlyDisc();//执行Dog特有的方法 向下转型:将一个指 向子类对象的父类引 用赋给一个子类的引 用,即:父类类型转 换为子类类型。需强 制类型转换
注意
<子类型> <引用变量名> = (<子类型> )<父类型的引用 变量>; 在向下转型的过程中,如果没有转换为真实子类类型,会 出现类型转换异常
}
编写子类,继承父类
//子类特有的属性和方法
}
继承关键字
[访问修饰符] class Dog extends Pet {
继承是Java中实现代码重用的重要手段之一。Java中只支持 单根继承,即一个类只能有一个直接父类
国家信息化人才培养工程(深圳博学)授权实训基地
讲解:方法重写
提问
上机中,Dog或Penguin的print()需要和 Pet中的print()有不同的实现,怎么办?
频繁修改代码,代码可扩展性、 添加XXX类,继承Pet类 国家信息化人才培养工程 )授权实训基地 可维护性差。使用 多态优化 修改主人类,添加给 XXX看病的方法 (深圳博学
串讲:多态
使用多态优化后的代码
提示: 父类Pet主人类 可以声明为抽象类; Dog类 toHospital()可以声明为抽象方法 3 public class Master { public class Dog extends Pet { 1 public void cure(Pet pet) { public void toHospital() { 又要给 XXX看病时,只需: if (pet.getHealth() < 50) this.setHealth(60); 1. 编写XXX类继承Pet类(旧方案也需要) pet.toHospital(); System.out.println(" 打针、吃药"); 2. 创建XXX类对象(旧方案也需要) } } 3. 其他代码不变(不用修改Master }类) } 多态:同一个引用类型,使用不同的实例而执行不同 Penguin类 操作。方法重写是实现多态的基础 测试方法 4 …… public class Penguin extends Pet { 2 Pet pet = new Dog(); public void toHospital() { Master master = new Master(); this.setHealth(70); master.cure(pet); System.out.println("吃药、疗养"); …… } }
提问
class A { public A(){
小结
System.out.println("父类的构造方法"); } } public class B extends A { public B(){
System.out.println("子类的构造方法");
} public static void main(String[] args) { 控制台输出什么?
B b=new B();
} }
国家信息化人才培养工程(深圳博学)授权实训基地
常见错误集中讲解
串讲:多态
提问
如下主人类中给宠物看病的方法,如果又需要给XXX宠物看病, 怎么办?
//给狗看病 public void cure(Dog dog) { if (dog.getHealth() < 50) { dog.setHealth(60); System.out.println("打针、 吃药"); } } } 养"); } //给企鹅看病 public void cure(Penguin penguin){ if (penguin.getHealth() < 50) { penguin.setHealth(70); System.out.println("吃药、疗
第二章 继承和多态
国家信息化人才培养工程(深圳博学)授权实训基地
预习检查
提问
如何继承一个类? 使用继承有什么好处? 使用多态有什么好处?
国家信息化人才培养工程(深圳博学)授权实训基地
本章任务
任务1:使用继承实现宠物类图结构 任务2:子类重写父类方法 任务3:使用super调用父类成员 任务4:使用多态实现宠物看病
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:继承时构造方法调用顺序
条件 顺序
子类的构造方法中没有通过super显式调用 默认先调用父类的无参构造方 父类的有参构造方法,也没有通过this显式 法 调用自身的其他构造方法 子类的构造方法中通过super显式调用父类 的有参构造方法 将执行父类相应构造方法,而 不执行父类无参构造方法
子类重写父类方法即可(方法重写:在子类中根据需求对从父类继 承的方法进行重新编写)
注意
重写方法和被重写方法必须具有相同的方法名和参数列 表 重写方法的返回值类型必须和被重写方法的返回值类型相 同或者是其子类 重写方法的不能缩小被重写方法的访问权限
国家信息化人才培养工程(深圳博学)授权实训基地
小结
提问
方法重写与方法重载有什么区别?
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:super关键字
提问
访问父类构造方法
上机中,Dog或Penguin如何访问Pet的成员?
访问父类属性或方法
super (参数);
super代表父
类对象
super.属性名/方法名(); super关键字和this关键字的作用类似,都是将被屏蔽了的成员变量、成 员方法变为可见可用。super用在子类中,访问直接父类中的被屏蔽的内 容,进一步提高代码的重用性和灵活性。super关键字不仅可以访问父类 的构造方法,还可以访问父类的成员,包括父类的属性、一般方法等, 无法通过super访问private成员
国家信息化人才培养工程(深圳博学)授权实训基地
讲解:instanceof
提问
如何减少在向下转型的过程中,没有转换为真实 子类类型的类型转换异常?
Java中提供了instanceof运算符来进行类型的判断
注意
使用instanceof时,对象的类型必须和instanceof后面的 参数所指定的类在继承上有上下级关系
国家信息化人才培养工程(深圳博学)授权实训基地
讲解:向上转型
上机中的主人类(Master)
//测试方法
Pet pet = new Dog(); pet.setHealth(20); Master master = new Master(); master.cure(pet);
分析
向上转型:父类的引 用指向子类对象。自 动进行类型转换
子类的构造方法中通过this显式调用自身的 在相应构造方法中应用以上两 其他构造方法 条规则 注意:如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向 更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:Object类
Object类是所有类的父类 Object类被子类经常重写的方法
注意 <父类型> <引用变量名> = new <子类型>();
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方 法,不是父类的方法 此时通过父类引用变量无法调用子类特有的方法
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:向下转型
提问
向上转型后,将无法调用子类特有的方法。如果 需要调用子类特有的方法,怎么办?
分析
使用父类作为方法的形参,是Java中实现和使用多态的主要方式 使用父类作为方法的返回值,也是Java中实现和使用多态的主要方式 演示示例:使用父类作为方法的返回值
国家信息化人才培养工程(深圳博学)授权实训基地
答疑时间
同学们请就以下方面的问题请教老师
(教员备课时自行填写)
国家信息化人才培养工程(深圳博学)授权实训基地
任务5:使用父类作为方法返回值
国家信息化人才培养工程(深圳博学)授权实训基地
本章目标
掌握继承的实现 方法重写 多态的应用 向上转型和向下转型
重点 难点 重点 难点
国家信息化人才培养工程(深圳博学)授权实训基地
串讲:继承
提问
说一说如下两个类有什么问题?如何优化?
Dog - name:String - health:int - love:int - strain:String + print():void + getName():String + getHealth ():int + getLove():int + getStrain():String + Dog() Penguin - name:String - health:int - love:int - sex:String + print():void + getName():String + getHealth ():int + getLove():int + getSex():String + Penguin()