课程 要求 参考 书目 课程 内容 课程 练习.

Slides:



Advertisements
Similar presentations
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
Advertisements

Java语言的特点 Java开发环境的搭建
第8章 继承和派生 8.1 继承与派生 8.2 派生类对基类成员的访问 8.3 派生类的构造函数与析构函数 8.4 多重继承与虚基类.
面向对象的C++程序设计基础 第 4 章 继承与派生.
第四章 继承与派生 Chapter 4 Inheritance and Derivation
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
第6章 多态性与虚函数.
7.2 访问控制 —— 公有继承 公有继承练习 //Point.h #ifndef _POINT_H #define _POINT_H class Point { //基类Point类的定义 public: //公有函数成员 void initPoint(float x = 0, float.
内容提要 代码重用 类的继承 多态 抽象类 多重继承 虚拟继承. 常宝宝 北京大学计算机科学与技术系
计算机可视化编程 基于Visual C++6.0的面向对象编程 第 四 讲 主讲教师:隋振                学时:32.
C++面向对象程序设计 第八章 继承和派生.
第12章 组合与继承 欢迎辞 第14次见面!.
第6章 继 承 主讲人:陈南京.
第四章 继承和派生类 汽车 专用汽车 运输汽车 货车 客车 消防车 洒水车 最普遍、最一般,可以自行驱动 含有汽车的特性,同时与汽车有不同
第14章 c++中的代码重用.
C++语言程序设计 第七章 继承与派生 清华大学 郑 莉.
C++ 面对对象程序设计 授课老师:.
第11章 类的继承和派生 继承是面向对象程序设计方法的四个基本特征之一,是程序代码可重用性的具体体现。
第八章 类和对象.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
1 Department of Computing.
再回首: Java关键字 数据类型:byte boolean char double float int long short ,
类和对象 潘荣江 山东大学计算机科学与技术学院
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
第3章 继承和派生.
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
第12讲 多继承与虚基类 多继承 虚基类.
辅导课程六.
第1章 C++基础.
類別的繼承 Vehicle Car.
第四章 小技巧.
面向对象程序设计 QQ群: Object-Oriented Programming 汽车学院.
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
软件学院 张 慧 清华大学软件学院.
第八章 继承与派生 丘志杰 电子科技大学 计算机学院 软件学院.
Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴
第十一章 继承和派生. 主讲教师:全红艳 第十一章 继承和派生.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++大学基础教程 第9章 继承与派生 北京科技大学.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第11讲 类的继承 1. 类的继承的概念 2. 类的单继承机制 3. 单继承中的构造函数和析构函数.
$9 泛型基础.
C++复习3 ----类的继承与派生.
C#面向对象程序设计 $6 深入理解类.
第13讲 多态 友员函数 多态性与虚函数 纯虚函数和抽象类.
第八讲 面向对象程序设计(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第三章 数据抽象.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 对象拷贝 视频提供:昆山爱达人信息技术有限公司.
本节内容 引用类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计教程 第8章 继承与派生 第8章 继承与派生 制作人:杨进才.
辅导课程十五.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
Class 2005/05/25.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第十二讲 继承 与 派生.
本节内容 在堆中创建对象 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
Presentation transcript:

课程 要求 参考 书目 课程 内容 课程 练习

课程内容 继承 概述 面向对象程序设计 单一继承 派生类中构造和析构函数 课程要求 参考书目 返回首页 面向对象程序设计

概述* 引言一:编程中的代码重复 class CPerson { public: void print(); private: char name[10]; int age; char sex; }; class CEmployee { public: void print(); private: char name[10]; int age; char sex; char department[20]; float salary; }; 面向对象程序设计 2-16

概述 引言二:泛化/特化 面向对象编程的三种机制 泛化是一种在保存类的差异的同时共享类的相似性的抽象机制 数据抽象 泛化/特化 多态 在面向对象的分析与设计中,泛化/特化机制 是从已有的类派生新的类的机制。 在面向对象的编程中,通过继承实现泛化/特化 面向对象程序设计 2-16

概述 继承 是指从一个或多个基类中继承数据结构和操作,形成新的派生类的一种机制。 继承其实是一个类与该类的一个或多个精化版本之间的关系。被精化的类是超类(基类、父类),每一个精化版本成为子类(派生类) 面向对象程序设计 2-16

概述 基类(父类) 类A 属性 服务 继 承 派 生 类B 性 务 属 服 派生类(子类) 面向对象程序设计 2-16

概述 直升飞机 生产者 标识号 重量 价格 子类 ISA 飞行器 生产者 标识号 重量 价格 喷气 战斗机 生产者 标识号 重量 价格 父类 导弹 发射导弹 面向对象程序设计 2-16

概述* 分类 单一继承 多重继承 飞行器 直升飞机 喷气战斗机 研究生 教职工 在职研究生 单一继承 多重继承 back 2-16 面向对象程序设计 2-16

单一继承* 派生类声明的格式(单一继承) class 派生类名:派生方式 基类名 {…… }; 1、派生方式在public、private、protected中选择, 缺省时默认为private。 2、派生类只能继承基类中的公有成员和保护成员, 而不能继承私有成员 3、构造函数、析构函数、友元关系、重载的new 和delete运算符是不可继承的 面向对象程序设计 2-16

单一继承 基类成员在派生类中的访问属性 基类 public protected private 派生类 面向对象程序设计 2-16

单一继承 class person { public: person(char *n,int a); char * getname(); memo 派生类 class person { public: person(char *n,int a); char * getname(); int getage(); void setname(char *n); void setage(int a); private: char name[40]; int age,height,weight;}; 面向对象程序设计 2-16

单一继承 服务和属性的继承关系 类 employee 服务 属性 person getname getage setname setage char name[40] int age int height int weight getsalary setsalary int salary 面向对象程序设计 2-16

对各种继承方式的讨论 公有派生 继承方式 基类 public protected private 派生类 面向对象程序设计 2-16

对各种继承方式的讨论 class CDerived:public CBase { int len,wid; public: memo class CDerived:public CBase { int len,wid; public: CDerived(int a,int b) {len=d; wid=e; } void show() { cout<<len<<wid<<endl; cout<<"x="<<Getx(); cout<<"\ty="<<y; cout<<"\tz="<<z<<endl; } int sum() {return Getx()+y+z+len+wid;} }; 问题: CBase中的x被继承下来了吗, 在CDerived中需要用到x如何访问 对于y,在CDerived中能够直接调用吗,如果定义了对象CDerived ob,如何访问y 面向对象程序设计 2-16

对各种继承方式的讨论 私有派生 基类 public protected private 派生类 面向对象程序设计 2-16

对各种继承方式的讨论* class CBase { protected: int a; public: int b; memo back class CBase { protected: int a; public: int b; void set(int x, int y) { a=x; b=y;} void Show() { cout<<a<<b<<endl;} }; class CDerived:private CBase { public: void setD(int x,int y) { set(x,y);} void showD() {cout<<a<<b<<endl;} }; 面向对象程序设计 2-16

派生类的析构与构造函数* 对执行次序的讨论 构造函数:首先执行基类的构造函数,再执行 派生类的构造函数。 析构函数:先执行派生类的析构函数,再执行 基类的 class base { public: base() {cout<<“base”<<endl;} ~base() {cout<<“~base”<<endl;} }; class derive:public base { public: derive() {cout<<“derive”<<endl;} ~derive() {cout<<“~derive”<<endl;} }; 面向对象程序设计 2-16

派生类的析构与构造函数 对构造规则的讨论 派生类构造函数定义形式: 派生类名(参数表):基类名(参数表) 如果有多个基类,则冒号后面可以用以下 形式: 基类1(参数表), 基类2(参数表)…… 各个基类的次序与运行结果无关 构造规则 面向对象程序设计 2-16

派生类的析构与构造函数 派生类含有对象成员 构造函数定义形式: 派生类名(参数表):基类名(参数表),对象成员(参数表) 如果有多个基类和多个对象,则冒号后面可以 用以下形式: 基类1(参数表), 基类2(参数表)……, 对象成员1(参数表),对象成员2(参数表)…… 面向对象程序设计 2-16

派生类的析构与构造函数 派生类含有对象成员 构造函数执行顺序如下: 基类的构造函数 对象成员的构造函数 派生类的构造函数 析构函数的执行次序与上述相反 面向对象程序设计 2-16

派生类的析构与构造函数 class A {int a; public: A(int i) memo 派生类含有对象成员 class A {int a; public: A(int i) {a=i; cout<<"A"<<endl; } ~A() {cout<<"~A"<<endl;} }; class base {int x; public: base(int i) {x=i;cout<<"base"<<x<<endl;} ~base() {cout<<"~base"<<x<<endl;}}; 面向对象程序设计 2-16

派生类的析构与构造函数 小结 基类构造函数不带参数,派生类不一定需要定 义构造函数,但是当基类的构造函数有参数, 所有的派生类都必须定义构造函数 若基类使用缺省构造函数或不带参数的构造函 数,则派生类中定义的构造函数可以省略冒号 后面部分,派生类也可不定义构造函数 面向对象程序设计 2-16

派生类的析构与构造函数* 小结 如果派生类的基类也是一个派生类,则每个派 生类只需负责直接基类的构造 back 小结 如果派生类的基类也是一个派生类,则每个派 生类只需负责直接基类的构造 由于析构函数不带参数,派生类中是否需要 定义析构函数与基类无关,基类和派生类的析 构函数是各自独立的 多层继承 面向对象程序设计 2-16