欢迎来到天天文库
浏览记录
ID:52454447
大小:363.50 KB
页数:38页
时间:2020-04-07
《派生类的构造函数与析构函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、派生类的构造函数与析构函数第三章继承132继承方式类的继承与派生4虚基类5聚合类6继承应用实例本章内容2021/10/813.1类的继承与派生3.1.1继承与派生实例继承是软件重用的一种形式。继承是将自然界中存在的普遍和特殊关系用程序设计的方式进行分类描述;在设计新类时,允许重用某个原有类的所有特征,并在此基础上添加新类的新特征。被重用的原有类称为基类baseclass而新创建的类称为派生类derivedclass。派生类不会影响到原有类的结构。2021/10/82实例:某一小型公司的实例企业员工工作编号姓名……显示企业员工信息计算实际发放工资……行政人员(与企业员工类相同)计算实
2、际发放工资……经理公司总销售额提成比例(其余同企业员工类)计算实际发放工资……销售人员个人销售额提成比例(其余同企业员工类)计算实际发放工资……2021/10/833.1类的继承与派生针对该公司的情况,先设计:一个一般员工类CCompanyStaff,代表员工的共性;让三个新类分别继承一般员工类CCompanyStaff,然后根据各自的差异性,新类可以对继承来的内容进行改造。2021/10/843.1.2派生类的定义从已有类产生新类的过程就是类的派生。定义语法如下:class<派生类名><继承方式>:<基类名1>,<继承方式>:<基类名2>…{<派生类成员的定义>;}3.1类的继承
3、与派生2021/10/85继承方式分为三种关键字:publicprivateprotected;单继承(只有一个基类名)和多继承;该公司情况类代码:企业员工类相关派生类P79经理、销售人员、行政人员这三个派生类在声明语句中分别指定了它们的基类CCompanyStaff,以及它们的继承方式-public;CSaleManager类,同时继承经理类Cmanager和销售人员类Csaleman;3.1类的继承与派生2021/10/86销售员经理行政主管行政人员企业员工类图3.1.3继承的级别增加行政主管一职,员工关系图如下:3.1类的继承与派生2021/10/87用C++语言描述三个类的
4、前向引用声明,形成了一个“类家族”:classCCompanyStaff;//基类员工//派生类行政人员继承员工classCAdminStaff:publicCCompanyStaff;//派生类行政主管继承行政人员classCForeAdmin:publicCAdminStaff;基类不受派生类变化的影响;派生类继承了基类的全部数据成员和除了构造函数析构函数之外的全部成员函数,但是派生类能否访问这些成员还要受继承方式的约束;3.1类的继承与派生2021/10/883.2继承方式3.2.1公有继承类的继承方式有public、private和protected三种,其中private
5、是缺省的继承方式;公有继承:基类各成员的访问权限如果是public或protected则在派生类中保持不变而基类中的private成员对派生类不可见,如图:2021/10/89private基类Base图3.3公有继承中的访问控制protectedpublicprivate派生类Derv:publicBaseprotectedpublicDervobjDBaseobjB3.2继承方式2021/10/810例3.1一个公有继承的例子:sclass3_1.hsclass3_1.cppsmain3_1.cpp基类A的所有成员在派生类中的访问控制权限都保持不变。3.2继承方式2021/10
6、/8113.2.2私有继承:基类各成员无论是何种访问权限在派生类中一律以private的身份出现,连派生类的对象也无法访问,只有派生类的函数能在类内访问它们。若要私有继承来的某些基类的成员函数在派生类中也能对外可见,需在派生类中对其成员公有化。usingCAnimal::SetWeight;//在派生类中将基类的成员函数SetWeight()公有化usingCAnimal::GetWeight;//在派生类中将基类的成员函数GetWeight()公有化例3.2私有继承中的公有化:sclass3_2.hsmain3_2.cpp3.2继承方式2021/10/812私有继承后的基类成员成
7、为了派生类的私有成员,实际上相当于终止了基类功能的继续派生。class<派生类名>:private<基类名>{public:using<基类名>::<基类函数名>;//公有化……};3.2继承方式2021/10/8133.2.3保护继承:protected访问权限:设计基类时,在隐藏成员的同时还要允许派生类的成员能访问到,这时protected就比private更合适;例3.3保护权限举例:sclass3_3.hsmain3_3.cpp3.2继承方式2021/10/8
此文档下载收益归作者所有