第8章_继承与派生.pptx
第8章继承与派生1
目录8.1继承和派生的概念8.2派生类成员的访问控制8.3派生类的构造函数和析构函数8.4多重继承2
8.1继承与派生的概念继承就是新的类从已有类得到已有的属性与服务(即从已有类产生新类的过程)。已有类称为基类或父类产生的新类称为派生类或子类从基类产生派生类的方法有2种:单继承 只允许一个派生类从一个唯一的基类继承产生多重继承(或多继承) 允许一个派生类从两个或两个以上的基类中继承产生3利用类的“继承”,可以将原来的程序代码重复使用,从而减少了程序代码的冗余度,符合软件重用的目标。基类:派生类:大学学生大学生研究生大专生本科生博士生硕士生研究生职工在职研究生
8.1继承与派生——派生类的声明单继承是从现有的一个基类创建一个新类的过程定义单继承的格式:class派生类名:[public/private/protected]基类名{ 派生类数据成员和函数成员定义}4已有的类继承原有类特性而生成的新类继承方式,默认为privateclassStudent{ public: intnum; charname[10]; charsex; voiddisplay();};classStudent1:publicStudent{ public: intage;; charaddr[20]; voiddisplay();};
8.1继承与派生——派生类的声明派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。5classStudent{ public: intnum; charname[10]; charsex; voiddisplay();};classStudent1:publicStudent{ public: intage;; charaddr[20]; voiddisplay();};intage;charaddr[30];voiddisplay();
8.2派生类成员的访问控制——公有继承公有继承、私有继承、保护继承基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。6类访问控制符从自身类访问从派生类访问从类外部的对象访问public是是是protected是是否private是否否
例公有继承访问规则的例子。类访问控制符从自身类访问从派生类访问从类外部的对象访问public是是是protected是是否private是否否7#includeiostreamusingnamespacestd;classParent //基类{public:intpubD;protected:intprotD;private:intprivD;};classSon:publicParent //公有继承{public:voidfn(){intx;x=pubD; //有效x=protD; //有效 x=privD; } //错误};intmain(){Parentp;p.pubD=10; p.protD=10; //错误p.privD=10;//错误Sons; //派生类对象s.pubD=20;//有效s.protD=20; //错误 s.privD=20; //错误return0;}派生类可直接访问基类的公有和保护成员外部对象不能直接访问自身和基类的私有和保护成员
8.2派生类成员的访问控制——私有继承除基类的私有成员将继承为派生类的私有成员外,基类的公有成员和保护成员也将成为派生类的私有成员。8类访问控制符从自身类访问从派生类访问从类外部的对象访问public是是否protected是是否private是否否
例私有继承的例子。类访问控制符从自身类访问从派生类访问从类外部的对象访问public是是否protected是是否private是否否9#includeiostreamusingnamespacestd;classParent//基类{protected:intx;public: voidsetx() {x=0;}voiddisplay(){coutx=xendl;}};classSon:privateParent//派生类{public: voidincrease()//新增成员