1、第四章 继承继承也叫派生。由一个类派生出一个新的类。用来派生的类叫基类(父类) 。派生出的类叫派生类(子类)。基类 派生类class 类名 public/protected/private:数据成员;成员函数;友元声明;class 类名:继承方式public/protected/private 基类名 1,继承方式 基类名 2 public/protected/private:数据成员;成员函数;友元声明;依据基类的个数,可以把继承分为单继承(一个基类)和多继承(多个基类)派生四部曲:1、 接收基类成员。2、 发展新成员3、 改造基类成员4、 书写自己的构造函数和析构函数。内容的展开:1、 继
2、承方式:public/protected/private2、 不同继承方式下,派生类中,基类成员的访问权限?。基类成员原本有个定义的访问权限。基类定义的访问权限(类内/外)派生类继承方式 基类成员在派生类中的访问权限(类内/外)特性public public public 保持protected X protected Xprivate X 不可访问 X Xpublic protected Xprotected protected Xprivateprotected不可访问 X X保护public private Xprotected private Xprivateprivate不可访问 X
3、 X私有所有基类的私有成员,在派生类中都不可访问。总结:基类成员在派生类中的访问权限,取决于两大因素:基类自己定义的访问权和派生方式。依据派生方式,6 字特征: 公有继承保持,保护继承保护,私有继承私有 。基类的私有成员,在派生类中都不可访问。3、派生四部曲。3.1 接收基类成员。A访问权的变化(基类成员,被派生类继承(继承方式 3 种)后,派生类对基类成员的访问权有变化)。B不能接收什么成员? 基类的构造函数和析构函数。 基类的友元函数。 基类的静态成员(数据/函数)3.2 发展新成员。 (规则同第三章)新成员能访问继承来的基类成员(除了私有及不可继承的成员) 。3.3 改造基类成员。A为什
4、么要改造?因为继承中会有些问题出现。二义性。(1)多继承中,多个基类中出现同名成员函数。class A public:void f()coutclass Aint a;public:void seta(int aa)a=aa;void puta()coutclass A /虚基类int a;public:void seta(int aa)a=aa;void puta()cout#include #include using namespace std;/*class Timeint hour,min,sec;public:Time()hour=0;min=0;sec=0;Time(int h,
5、int m,int s)hour=h;min=m;sec=s;void settime(int h,int m,int s) hour=h;min=m;sec=s;void showtime(void) if(hour12)cout=0)couthms;boom boom1(“白色“,5.8,h,m,s);boom1.showtime();couthms;boom1.settime(h,m,s);boom1.boomit();return 0;赋值相容关系:在公有继承下,基类使用派生类对象来访问自己的成员。 (使用方式:基类对象、引用、指针)(对将来学到的虚函数,很有用)#include class A int x;public:void setx(int xx)x=xx;void printx()coutsety(10);pb-printxy();A p.setx(20);p.printx();