面向对象程序设计C++第7章-课件ppt.ppt
《面向对象程序设计C++第7章-课件ppt.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计C++第7章-课件ppt.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么第七章 继承 7.1 7.1 概述概述 7.2 7.2 继承的实现继承的实现 7.3 7.3 继承方式继承方式 7.4 7.4 派生类的初始化和析构派生类的初始化和析构 7.5 7.5 虚基类虚基类 7.6 7.6 向上映射向上映射 7.7 7.7 程序举例程序举例 7.8 7.8 小结小结在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.1 7.1 概概 述述 类之间的继承关系是对现实世界中遗传关系的直接模拟,它表示类之间的内在联系
2、以及对属性和方法的共享,即派生类可以沿用基类的某些特征。如果A类派生出B类,一般约定把A称为基类,把B称为派生类。继承具有传递性,如果C类继承B类,B类又继承A类,则C类继承A类。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么继承与派生问题举例 交通工具交通工具 轮船轮船 汽车汽车 飞机飞机客车客车 卡车卡车在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么-继承与派生的目的继承与派生的目的 继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,
3、需要对原有程序进行改造。C+中类的继承层次自然地表达了人们分析问题时所用的分类结构。大大改善了软件系统的可理解性和可维护性在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么例例 :基类:基类personperson class person public:void display(void);private:char name30;long no;int age;char sex;char*s;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.2 7.2 继承的实现继承的实现 派生类
4、的声明派生类的声明 class 派生类名:继承方式 基类名1,继承方式 基类名2 派生类成员列表;;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 说说 明明 派生类不能继承基类的构造函数和析构函数。继承方式用于说明从基类继承来的成员的访问控制属性。如果派生类有多个基类,称为多重继承;如果 派生类只有一个基类,则称为单重继承。在派生类中定义一个与基类成员完全相同的成员,称为同名覆盖。直接使用派生类中的该成员名,就只能访问派生类定义的成员。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了
5、什么例例 :高校人员类。:高校人员类。class teacher:public person class teacher:public person public:public:void display(void);/void display(void);/同名同名覆盖覆盖 private:private:char*c3;/char*c3;/主讲课主讲课程程 int salary;/int salary;/薪水薪水 ;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 class student:public personclass stu
6、dent:public person public:public:void display(void);/void display(void);/同同名覆盖名覆盖 private:private:int credit;/int credit;/学分学分 ;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 class employee:public personclass employee:public person public:public:void display(void);/void display(void);/同名覆同名覆盖盖
7、 private:private:int grage;/int grage;/职务级别职务级别 int salary;/int salary;/薪水薪水 ;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.3 7.3 继承方式继承方式 不同继承方式的影响主要体现在:不同继承方式的影响主要体现在:派生类成员成员对基类成员的访问权限通过派生类对象对象对基类成员的访问权限 C+C+语言提供了语言提供了3 3种继承方式:种继承方式:公有继承(public)私有继承(private)保护继承(protected)如果在定义派生类时未声明继承方式,
8、默认的继承方式是private。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.3.1 7.3.1 公有继承公有继承基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。通过派生类的对象只能访问基类的public成员。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么例例7.1 7.1 公有继承举例。公有继承举
9、例。class A class A public:public:seta(int seta(int x=0);x=0);int int geta(void);geta(void);private:private:int a;int a;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 class B:public A/class B:public A/公有继承公有继承 public:public:setb(int x=0);setb(int x=0);int getb(void);int getb(void);private:privat
10、e:int b;int b;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.3.2 7.3.2 私有继承私有继承基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。派生类中的成员函数可以直接访问基类中的publicpublic和和protectedprotected成员,但不能直接访问基类的privateprivate成员。通过派生类的对象不能直接访问基类中的任何成员。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了
11、什么 例例7.2 7.2 私有继承举私有继承举 例例 class B:private A/class B:private A/私有私有继承继承 public:public:set(int x=0,int y=0);set(int x=0,int y=0);int getb(void);int getb(void);void display(void);void display(void);private:private:int b;int b;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.3.3 7.3.3 保护继承保护继承基类的p
12、ublic和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。通过派生类的对象不能直接访问基类中的任何成员。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么例例7.3 7.3 保护继承举例。保护继承举例。class B:protected A/class B:protected A/保护继承保护继承 public:public:set(int x=0,int y=0);s
13、et(int x=0,int y=0);int get(void);int get(void);void display(void);void display(void);private:private:int b;int b;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.4 7.4 派生类的初始化和析构派生类的初始化和析构派生类的初始化不仅要考虑新增成员的初始化,还要考虑从基类继承来的成员的初始化。由于派生类无法继承基类的析构函数,派生类的析构同样离不开基类析构函数的支持,其执行顺序与构造函数正好相反。在日常生活中,随处都可以看到
14、浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么7.4.1 7.4.1 派生类的构造函数派生类的构造函数 派生类构造函数的语法形式派生类构造函数的语法形式 派生类名:派生类名(参数表):基类1(参数表),基类m(参数表),对象成员1(参数表),对象成员n(参数表)在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 说说 明明 派生类的对象在初始化时,先调用虚基类的构造函数;再按照基类在继承时声明的顺序,依次调用基类的构造函数;然后按照对象成员在派生类中定义的顺序,依次调用对象成员的构造函数;最后调用派生类的构造函
15、数。析构函数的调用顺序与构造函数正好相反。如果基类定义了没有默认形参值的构造函数,则必须定义派生类的构造函数。在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 间接基类的举例间接基类的举例 class Aclass A protected:protected:int a;int a;class B:public A class B:public A protected:protected:int b;int b;class C:public B class C:public B private:private:int c;int c;AB
16、C有间接基类的派生类在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这一点点算不了什么 派生类派生类C C的构造函数的构造函数 C:C(int x,int y,int z):B(x,y)C:C(int x,int y,int z):B(x,y)c=z;c=z;派生类派生类A A类和类和B B类的构造函数类的构造函数 A:A(int x)A:A(int x)a=x;a=x;B:B(int x,int y):A(x)B:B(int x,int y):A(x)b=y;b=y;在日常生活中,随处都可以看到浪费粮食的现象。也许你并未意识到自己在浪费,也许你认为浪费这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 C+ 课件 ppt
限制150内