第5章-面向对象高级-继承教学文案

合集下载

第5章-面向对象高级-继承教程文件

第5章-面向对象高级-继承教程文件

答案:
上述场景的利用关系是:
销售人员管理柜台。 每个柜台处理一个特定的产品。 顾客买一个产品。 顾客付钱给销售人员。
名词 动词 名词
让IT教学更简单,让IT学习更有效
实例化关系:
实例化关系是类与类的实例之间的 关系。这种关系称为实例化。 xxx 是 xxx 公共汽车是机动车 香蕉是水果 西南石油大学是一所高校
实现继承
让IT教学更简单,让IT学习更有效
• 定义一个animal类,具有数据成员 name ,age,和赋值方法void setdata 给name 和age成员赋值,一个输出output方法输 出name和age的值
• 定义一个dog类,具有数据成员name, age和type(string类型),具有赋值方法 void setdog给name、age和type数据成员 赋值,output_dog方法输出name、age和 type的值
让IT教学更简单,让IT学习更有效
基类和派生类的写法和继承关系
• 基类中公有成员 在派生类的访问及类外访 问情况
让IT教学更简单,让IT学习更有效
• 基类中的公用成员 在派生类及其类外均可 直接访问
• 基类的 公有成员在派生类中仍然是公有成 员
让IT教学更简单,让IT学习更有效
• 基类中私有成员 在派生类的访问及类外的 访问
让IT教学更简单,让IT学习更有效
• 基类的私有成员在派生类中没法直接使用, 在类外也不能访问
• 继承的基类私有成员在派生类中仍然是 私 有成员
让IT教学更简单,让IT学习更有效
• 基类中保护成员 在派生类的访问和类外访 问情况
让IT教学更简单,让IT学习更有效
• 基类中保护成员 在派生类 可直接使用, 在派生类中仍然是保护成员

C++面向对象程序设计 第5章 继承与派生

C++面向对象程序设计 第5章 继承与派生

私有派生
私有派生, 私有派生,派生类中基类公有和保护成员成为私有
class ClassName: private BaseClassName 私有派生时,基类中公有成员和保护成员在派生类中均变为私有的, 私有派生时,基类中公有成员和保护成员在派生类中均变为私有的, 在派生类中仍可直接使用这些成员,基类中的私有成员, 在派生类中仍可直接使用这些成员,基类中的私有成员,在派生类 中不可直接使用。 中不可直接使用。 基类成员属性 公有 保护 私有 派生类 可以引用 可以引用 不可引用 派生类外 不可引用 不可引用 不可引用
中所谓“ 在C++中所谓“继承”就是在一个已存在的类的基础上建立一个新 中所谓 继承” 的类。已存在的类称为“基类 或 父类(father class)”。 。 的类。已存在的类称为“基类(base class)”或“父类 新建立的类称为“派生类 新建立的类称为“派生类(derived class)”或“子类 或 子类(son class)”。 。
A为私有派生 为私有派生
但派生并不是简单的扩充,有可能改变基类的性质。 但派生并不是简单的扩充,有可能改变基类的性质。 有三种派生方式:公有派生、保护派生、私有派生。 有三种派生方式:公有派生、保护派生、私有派生。 默认的是私有派生。 默认的是私有派生。
从一个基类派生一个类的一般格式为: 从一个基类派生一个类的一般格式为: class ClassName:<Access>BaseClassName { 派生类名 private: ......; ; public: ......; ; ......; ; } //公有成员说明 公有成员说明 //保护成员说明 保护成员说明 //私有成员说明 私有成员说明 继承方式 基类名

C++与面向对象程序设计第五章 继承 (PPT5)

C++与面向对象程序设计第五章 继承 (PPT5)

5.3.1 派生类成员的定义与使用
派生类除从基类那里继承了public和protected成员外,也 可以定义派生类自己的数据成员和成员函数,其定义与一般类中 的定义完全一样,没有任何区别。根据需要定义。 1. 直线类 CFigLine 分析:两点定一线,从基类继承m_X1和m_Y1作为直线的一个点, 在派生类中增加两个数据成员m_X2和m_Y2作为直线的第二个点。 定义新的Draw成员函数用来画直线。
C++与面向对象程序设承、基类与派生类 派生类的定义 派生类设计 派生类设计实例(CStu) 类单继承、多继承
第五章 继承
“继承”是面向对象程序设计的主要特征之一。
继承——对原来程序中已有的东西,如果继续有用,我们可以不加任
何修改,继承下来,而不必再从零做起编写原来的程序。这 就是代码复用。
在使用的过程中,如果仅仅使用成员的名字,意味着访问的是新增的 成员,因为新增的成员“覆盖”了继承而来的同名成员,所以,如果 要访问继承来且被覆盖的成员,必须指明类范围“::”。例:
main() { C obj; //定义一个C类对象obj cout<<obj.x<<endl; //新增的x obj.Show(); //调用新增的成员函数Show,
Protected
protected Public Protected private Public Protected
Protected
Protected Protected Private Private
5.3 派生类设计
例:设计四个基本图形类:直线类CFigLine、长方型类CFigRect、
5.2 派生类的定义
class 派生类名称:(public、protected或private) 基本类名称 { … };

第5章-面向对象的高级程序设计

第5章-面向对象的高级程序设计

()
虚方法实现多态例题5.2
创建一个控制台应用程序,其中自定义一个类,然后自定义 类和类,这些类都继承自类。在类中定义虚方法,在其子类 中重写该方法,输出交通工具的运行状态。
类 ()
; (); =; (); () { (())(); }
5.4.1 类的多态性(**)

实现动态的多态性必须满足的
()
三个条件:
()
子类的对象赋给父类的引用;
子类的方法要重写()父类中
的对应的虚()方法,或者抽象
方法()或者实现接口中的对应
的成员方法。



()
()
()
通过父类或者接口的引用调用
在中被继承的类称为基类或者父类,继承了基类的类称为派生 类或子类。类之间的继承关系是通过“冒号”实现的,“冒号” 的前面是派生类,后面是基类。语法格式如下所示。
[类修饰符] 派生类名:基类名 {
类的成员; }
5.3.1 修饰符和关键字
子类不能访问父类的私有成员,可以访问器公有成员,但是 任何类都可以访问该公有成员,这不符合我们的要求,为了 解决这一问题,中提供了另外一个种修饰符,被该修饰符修 饰的成员允许被其子类访问,而不允许被其它非子类访问。
5.1 静态成员 ()
静态方法与实例方法的区别
静态方法 关键字 使用类名调用 可以访问静态成员
实例方法 不需要关键字 使用对象调用 可以访问静态成员
不可以直接访问实例成员 可以直接访问实例成员
调用前初始化
实例化对象时初始化
5.2 静态类和静态构造方法(了 解)
静态类:当类中的成员全部是静态成员时,就可以把这 个类声明为静态类。声明静态类时需要在关键字之前加 上关键字。

《java面向对象程序设计继承和多态》教案

《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面向对象程序设计-继承和多态》教案

《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. 课堂提问:通过提问了解学生对继承和多态的理解程度。

第5章面向对象高级应用

第5章面向对象高级应用

class Program
{ static void Main(string[] args) { B b = new B(); b.Display(); class A Console.ReadLine(); { public void Display() } { } Console.WriteLine("display in a"); } } class B : A {



base关键字使用对象实例,所以在静态成员中使用 它会产生错误。


class Program { static void Main(string[] args) { Employee e = new Employee(); e.GetEmployeeInfo();


Console.ReadLine();
Animal 对象 被调用的 方法 行为
Elephant
Cat
Eat () Eat () Eat ()
Eat Grass
Eat Mouse
Eat Cheese
Mouse
2.5 隐藏基类成员和虚方法重载的区别


虚方法重载是将代码重写,基类的代码将删除;
而隐藏基类成员并不会把基类代码删除,只是隐藏起来。 当把派生类对象转换成基类对象后,二者有显著区别:
static void Main(string[] args) { Bicycle b = new Bicycle(); b.Wheel(); Tricycle t = new Tricycle(); t.Wheel(); Jeep j = new Jeep(); j.Wheel(); }
class Vehicles//车辆 { public virtual void Wheel() { Console.WriteLine("I have 4 wheels"); } } class Bicycle : Vehicles//自行车 { public override void Wheel() { Console.WriteLine("I have 2 wheels"); } } class Tricycle : Vehicles//三轮车 { public override void Wheel() { Console.WriteLine("I have 3 wheels"); } } class Jeep : Vehicles//吉普车 { }

C# Ch5面向对象的高级程序设计

C# Ch5面向对象的高级程序设计
第五章 面向对象的高级程序设计
1. 总体要求 •掌握静态类与静态类成员的定义与使用。 •理解类的继承性与多态性,掌握其应用方法。 •理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方 法。 •理解嵌套类、分部类和命名空间的概念,掌握嵌套类、分部类 和命名空间的使用方法。 2. 相关知识点 •熟悉C#的结构、类、数组的区别。 •熟悉类和类成员的定义与使用 •熟悉方法的定义与使用等基本操作。
5.2.1 类的继承性
• 2.构造函数的调用 • 在C#中,派生类不能继承其基类的构造函数,但是,在创建 对象时,会调用构造函数,为对象分配内存并初始化对象的 数据。创建派生类对象时,为完成其基类部份的成员初始化, 会调用基类的构造函数。其调用构造函数的顺序是先调用基 类构造函数,再调用派生类的构造函数,以完成数据成员分 配内存空间并进行初始化的工作。 • 类的继承可以传递,例如:假设类C继承于类B,类B又继承 类A,那么C类即具有类B和类A的成员,可以认为类A是类C 的祖先类。在这种情况下,构造函数的调用次序按由高到低 顺序依次调用,即先调用A的构造函数,再调用B的构造函数。 最后调用C的构造函数。
5.2.1 类的继承性
• public class A • { • public A() { } • }
• public class B : A • { • public B() { } • }
5.2.1 类的继承性
• 新类(即派生类)将获取基类的所有非私有数据和行为以 及新类为自己定义的所有其他数据或行为。因此,新类具 有两个有效类型:新类的类型和它继承的类的类型。 • 在上面的示例中,类 B 既是有效的 B,又是有效的 A。访 问 B 对象时,可以使用强制转换操作将其转换为 A 对象。 强制转换不会更改 B 对象,但您的 B 对象视图将限制为 A 的数据和行为。将 B 强制转换为 A 后,可以将该 A 重 新强制转换为 B。并非 A 的所有实例都可强制转换为 B, 只有实际上是 B 的实例的那些实例才可以强制转换为 B。 如果将类 B 作为 B 类型访问,则可以同时获得类 A 和类 B 的数据和行为。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 继承的 公有成员在派生类中仍然是公有成员
− 例如猫和狗都属于动物,在程序中便可认为猫和狗继承自动物,同理 波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗,这些动物之 间会形成一个继承体系。具体如下图所示。
5.1 类的继承
让IT教学更简单,让IT学习更有效
− 在C#中,类的继承是指在一个现有类的基础上去构建一个新的类,构 建出来的新类被称作子类,现有的类被称作父类,子类会自动拥有父 类所有可继承的属性和方法。
让IT教学更简单,让IT学习更有效
• 基类的私有成员在派生类中没法直接使用, 在类外也不能访问
• 继承的基类私有成员在派生类中仍然是 私 有成员
让IT教学更简单,让IT学习更有效
• 基类中保护成员 在派生类的访问和类外访 问情况
让IT教学更简单,让IT学习更有效
• 基类中保护成员 在派生类 可直接使用, 在派生类中仍然是保护成员
• 一个输出时、分、秒的输出方法void output(); • 创建对象进行测试
让IT教学更简单,让IT学习更有效
面向对象-继承
目录
类的继承
让IT教学更简单,让IT学习更有效
sealed关键字
5.1 类的继承
让IT教学更简单,让IT学习更有效
• 5.1.1 继承的概念
− 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继 承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 一种关系体系。
实现继承
让IT教学更简单,让IT学习更有效
• 定义一个animal类,具有数据成员 name ,age,和赋值方法void setdata 给name 和age成员赋值,一个输出output方法输 出name和age的值
• 定义一个dog类,具有数据成员name, age和type(string类型),具有赋值方法 void setdog给name、age和type数据成员 赋值,output_dog方法输出name、age和 type的值
• 保护成员在 类外部是 没法访问的
让IT教学更简单,让IT学习更有效
• 派生类书写 形式 • [public或internal] class 类名:基类名 •{
•}
5.1 类的继承
让IT教学更简单,让IT学习更有效
注意:
在类的继承中,需要注意一些问题,具体如下: ‒ 派生类自然继承基类的成员 ‒ 基类中的公用成员 在派生类及其类外均可直接访问
汽车与轮胎的关系 公司与部门的关系
让IT教学更简单,让IT学习更有效
思考
识别下面类对间的关系: 1. 电视 –扬声器 2. 哺乳动物 –老虎 3. 外衣 –衬衫 4. 杯子 –茶 5. 计算机 –微处理器
答案: 5 和 1是组合关系的例子。 3 和 2是继承关系的例子。 4没有表现出任何关系。茶不是杯子的属性。
让IT教学更简单,让IT学习更有效
基类和派生类的写法和继承关系
• 基类中公有成员 在派生类的访问及类外访 问情况
让IT教学更简单,让IT学习更有效
• 基类中的公用成员 在派生类及其类外均可 直接访问
• 基类的 公有成员在派生类中仍然是公有成 员
让IT教学更简单,让IT学习更有效
• 基类中私有成员 在派生类的访问及类外的 访问
让IT教学更简单,让IT学习更有效
继承关系
在面向对象环境中,不同类的对象间有各种关系:
• 继承关系:
继承关系
让IT教学更简单,让IT学习更有效
父类(超类 )
继承关系
让IT教学更简单,让IT学习更有效
父类
子类
继承关系
让IT教学更简单,让IT学习更有效
父类
子类 继承父母的特征, 如身高、肤色和行为
让IT教学更简单,让IT学习更有效
课前练习
• 定义一个Time类,包括: • 三个私有数据成员时,分,秒; • 两个构造函数,一个通过传入的参数对时、分、秒进行初始化,一
个无参构造函数获取系统当前时间(System.DateTime.Now.Hour, System.DateTime.Now.Minute, System.DateTime.Now.Second 分别取得当前的时、分、秒), • 三个自读属性对时、分、秒读取 • 一个方法用于对秒增加1秒(void addseconed(),注意六十进位 问题
利用关系让IT教学更简单,让IT学习更有效
面向对象编程允许类使用另一个类。 这个关系类型被称为利用。
让IT教学更简单,让IT学习更有效
思考
在下面的部门商店的场景中识别类和它们的利用关系。 有几个柜台,商店的每个柜台由一个销售人员负责, 它销售特定的商品。顾客来到一个柜台。依赖顾客购 买产品的想法,销售人员销售产品给客户并且接受支 付。
答案:
上述场景的利用关系是:
销售人员管理柜台。 每个柜台处理一个特定的产品。 顾客买一个产品。 顾客付钱给销售人员。
名词 动词 名词
让IT教学更简单,让IT学习更有效
实例化关系:
实例化关系是类与类的实例之间的 关系。这种关系称为实例化。 xxx 是 xxx 公共汽车是机动车 香蕉是水果 西南石油大学是一所高校
让IT教学更简单,让IT学习更有效
使用类和继承
在C#中,继承实际就是子类继承父类的数据成 员和成员函数。 继承或从其他类获得属性的类被称为派生类。 属性被派生的类被称为基类。 在面向对象编程中,基类实际是超类,派生类 是子类。 基类、超类是一回事 派生类、子类是一回事
让IT教学更简单,让IT学习更有效
让IT教学更简单,让IT学习更有效
继承关系
你可以在超类和它的子类之间建立关系。 下图显示了超类的子类的层次。
Automobile 超类
Carta Mitsubish
Automobile 属性:车轮、引擎、颜色等,前进、 加速、后退、停止等方法
让IT教学更简单,让IT学习更有效
思考
创建搅拌器、VCR、洗衣机、音响类、对象的 层次,并且在可能的地方进行归纳。
答案: 下图显示了类对象的层次。
电子设备
娱乐设备
家用设备
彩电 VCR 立体声 搅拌器
洗衣机
组合关系让IT教学更简单,让IT学习更有效
面向对象编程允许你组成一个对象,它包括 另一个对象作为它的部分。这个组成对象的 机制被称为组合。
相关文档
最新文档