C++复习3 ----类的继承与派生.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
Java的面向对象程序设计.
第6章 继承.
第8章 继承和派生 8.1 继承与派生 8.2 派生类对基类成员的访问 8.3 派生类的构造函数与析构函数 8.4 多重继承与虚基类.
课程 要求 参考 书目 课程 内容 课程 练习.
面向对象的C++程序设计基础 第 4 章 继承与派生.
四資二甲 第三週作業 物件導向程式設計.
第10章 虚函数与多态性.
7.2 访问控制 —— 公有继承 公有继承练习 //Point.h #ifndef _POINT_H #define _POINT_H class Point { //基类Point类的定义 public: //公有函数成员 void initPoint(float x = 0, float.
内容提要 代码重用 类的继承 多态 抽象类 多重继承 虚拟继承. 常宝宝 北京大学计算机科学与技术系
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承
计算机可视化编程 基于Visual C++6.0的面向对象编程 第 四 讲 主讲教师:隋振                学时:32.
C++面向对象程序设计 第八章 继承和派生.
第12章 组合与继承 欢迎辞 第14次见面!.
面向对象程序设计 第三章 C++面向对象程序设计 武汉大学 赵小红.
第6章 继 承 主讲人:陈南京.
第四章 继承和派生类 汽车 专用汽车 运输汽车 货车 客车 消防车 洒水车 最普遍、最一般,可以自行驱动 含有汽车的特性,同时与汽车有不同
第14章 c++中的代码重用.
C++语言程序设计 第七章 继承与派生 清华大学 郑 莉.
C++ 面对对象程序设计 授课老师:.
第11章 类的继承和派生 继承是面向对象程序设计方法的四个基本特征之一,是程序代码可重用性的具体体现。
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第6章 多态性与虚函数.
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.
Using C++ The Weird Way Something about c++11 & OOP tricks
类和对象 潘荣江 山东大学计算机科学与技术学院
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
版权所有 复制必究 第 3 章 C++面向对象程序设计.
授课老师:龚涛 信息科学与技术学院 2018年4月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第10章 C++面向对象程序设计 本章导读 C语言是一种结构化程序设计语言,它是面向过程的,在处理较小规模的程序时一般比较容易实现,而当程序规模较大时,C语言就显示出了它的不足。在这种情况下C++应运而生,C++语言是从C语言演变而来的,它保留了C语言的所有优点,同时也增加了面向对象的功能。现在C++已成为程序设计中应用最广泛的一种语言。
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
第12讲 多继承与虚基类 多继承 虚基类.
辅导课程六.
第9章 类和对象(一) 9.1 面向对象的基本概念 9.2 类与对象的声明和定义 9.3 成员函数 9.4 对象的访问 9.5 对象的存储.
第1章 C++基础.
第八章 继承与派生 丘志杰 电子科技大学 计算机学院 软件学院.
第十一章 继承和派生. 主讲教师:全红艳 第十一章 继承和派生.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++大学基础教程 第9章 继承与派生 北京科技大学.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
第13讲 多态 友员函数 多态性与虚函数 纯虚函数和抽象类.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++程序设计— 多态与虚函数 主讲:资讯系张玉宏.
C++复习2----类与对象.
第三章 数据抽象.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第九章 物件導向-進階.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计教程 第8章 继承与派生 第8章 继承与派生 制作人:杨进才.
辅导课程十五.
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本课程学习目标 培养编程技能 开启智慧之门.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第十二讲 继承 与 派生.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Presentation transcript:

C++复习3 ----类的继承与派生

为什么要继承 如果软件编写的工程规模很大,重用已经测试过的类代码要比重新编写新代码节省开发时间。 基类与派生类 从已经定义的类产生新类的过程称为派生。在派生过程中,已定义的类称为基类,或称为父类;所产生的新类称为派生类,也称为子类。

单继承与多继承 从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。 声明派生类的格式: class 派生类名:[派生方式1],基类名1,[派生方式2],基类名2 [,...,派生方式n,基类名n] { //派生类新增的成员 };

继承下的访问控制 public继承----基类中的public和protected成员在派生类中仍然是public和protected private继承----基类中的public和protected成员在派生类中转化为private成员 protected继承----基类中的public和protected成员在派生类中转化为protected成员

派生类对象的初始化和撤销 由于基类的构造函数和析构函数不能被继承,所以,派生类需要自己的构造函数和析构函数。 单继承下的派生类构造函数的定义: 派生类构造函数名(参数表1):基类构造函数名(参数表2),子对象名(参数表3) { 派生类的构造函数体 } 注意:参数表2和参数表3中的参数必须是参数表1中的参数。

虚基类 在多继承中,如果派生类的两个或多个基类有共同的祖先基类,当派生类访问继承下来的公共成员时,可能因同名成员问题而出现二义性,通过虚基类,就可以避免这种二义性。 虚基类的声明是在派生类的声明过程中进行的,其形式为: class <派生类名>:virtual<继承方式><基类名>

继承的使用原则 在什么情况下使用继承,什么情况下使用组合,是面向对象程序设计的重要机制。

什么情况下使用组合 Class Car { 当一个类是由其它类的对象组合而成,且具有部分与整体关系,就可以使用组合。 Body body; Wheel wheel[4] Door left,right; Engine engine; Public: Run() { cout<<“This Car is runing.” <<endl;} } 当一个类是由其它类的对象组合而成,且具有部分与整体关系,就可以使用组合。 组合也是构建新类的重要手段,主要通过包含一个已经存在的类对象构建新类。 组合是将一些相对简单的对象组合成为复杂的对象。

什么情况下使用继承 在继承层次结构图中,居于顶层的类更具“一般性”,是其子类共同特性的抽象,反之,沿着继承树的分支向下延伸,下层的类变的更加“具体化”。 使用继承来创建类要考虑: 新类是否需要使用已知类的“全部”成员。 是否能将已知类的共有成员提取。 使用组合是否可以代替,若能则使用组合。

运行结果: Person.print 说明派生类可以使用基类中的成员函数 void main() class Person { public: void print() { cout<<"Person.print"<<endl;} }; class Student:public Person //Student继承Person void show() {cout<<"Student. show "<<endl; } void fun(Person &p) //参数是基类指针 { p.print(); } void main() { Person person; //类Person实例化成对象person Student student; //类Student实例化成对象student fun(student); //参数是对象student fun(person); //参数是对象person } 运行结果: Person.print 说明派生类可以使用基类中的成员函数

多态性 不同类型的对象接受了相同的消息,往往表现出不同的行为。类中相同的成员函数名对应不同的实现。 C++中,类的多态性主要有两种表现: 1.编译时的多态性(静态联编) 2.运行时的多态性(动态联编)

class Student { private: char Name[10]; public: void Learn() { cout<<"Student is Learning."<<endl; } }; class GraduateStudent:public Student //GraduateStudent继承Student Private: int Grade; void Learn() //派生类里有与基类同名的函数 {cout<<"GraduateStudent is Learning."<<endl;} 编译时的多态性 void main() { Student S; //基类Student实例化为对象S S.Learn(); //运行基类的方法Learn() GraduateStudent GS; //派生类GraduateStudent实例化 为GS GS.Learn(); //运行派生类的方法Learn() } 运行结果: Student is Learning. GraduateStudent is Learning.