欢迎来到天天文库
浏览记录
ID:40522445
大小:846.50 KB
页数:62页
时间:2019-08-04
《c++谭浩强教学第5章修订》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章继承与派生5.1继承与派生的概念(P150)一、为什么要使用继承通过继承的机制,可以利用已有的类来定义新的类,所定义的新类型拥有原来类型的属性,同时还拥有新的属性。继承的目的在于实现代码的重用。称已存在用来生成新的类型的类为基类,而由已存在类派生出来的新类为派生类。派生类继承了基类,即派生类中拥有基类中所有成员,并且派生类本身还拥有它自己的新成员。例如:已建有学生基本数据类StudentclassStudent{public:voiddisplay(){cout<<"num:"<2、out<<"sex:"<3、stringaddr;};二、单继承与多继承一个派生类只有一个直接基类的情况,称为单继承,一个派生类同时有多个基类的情况,称为多继承。62XYZABC单继承多继承5.2派生类的声明方式(P153)单继承派生类的一般定义格式class派生类名:继承方式基类名{//派生类新增的数据成员和成员函数}说明:(1)三种继承方式:公有继承:classStudent1:publicStudent{//….};私有继承:classStudent1:privateStudent{//….};62保护继承:classStudent1:protectedStudent{//….};4、例如:classStudent1:publicStudent{public:voiddisplay1(){cout<<"age:"<5、play1();继承新增数据成员1.派生类继承了基类的所有成员;2.增加新的成员;3.改变现有成员的属性和重新定义基类中已有的成员函数。625.4派生类成员的访问属性**基类成员在派生类中的访问属性三种不同的继承方式导致原来具有不同访问属性的基类的成员在派生类中具有不同的访问属性。在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivateprivatepublicprotectedprote6、ctedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected从表中归纳出:(1)基类中的私有成员无论哪种继承方式,基类中的私有成员在派生类中都不可直接访问;(2)基类中的公用成员当类的继承方式为公用继承时,基类中的所有公用成员在派生类中仍以公用成员的身份出现;62当类的继承方式为私有继承时,基类中的所有公用成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有公用成员在派生类中都是以保护成员的身份出现。(3)基类中的保护成员当类的继承方式为7、公用继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现;当类的继承方式为私有继承时,基类中的所有保护成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。5.4.1公用继承公有继承的特点是:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,在派生类中是不可访问的。例5.1访问公有基类的成员#include#includeusingnamespacestd;classStudent{public:void8、get_value(){cin>>nu
2、out<<"sex:"<3、stringaddr;};二、单继承与多继承一个派生类只有一个直接基类的情况,称为单继承,一个派生类同时有多个基类的情况,称为多继承。62XYZABC单继承多继承5.2派生类的声明方式(P153)单继承派生类的一般定义格式class派生类名:继承方式基类名{//派生类新增的数据成员和成员函数}说明:(1)三种继承方式:公有继承:classStudent1:publicStudent{//….};私有继承:classStudent1:privateStudent{//….};62保护继承:classStudent1:protectedStudent{//….};4、例如:classStudent1:publicStudent{public:voiddisplay1(){cout<<"age:"<5、play1();继承新增数据成员1.派生类继承了基类的所有成员;2.增加新的成员;3.改变现有成员的属性和重新定义基类中已有的成员函数。625.4派生类成员的访问属性**基类成员在派生类中的访问属性三种不同的继承方式导致原来具有不同访问属性的基类的成员在派生类中具有不同的访问属性。在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivateprivatepublicprotectedprote6、ctedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected从表中归纳出:(1)基类中的私有成员无论哪种继承方式,基类中的私有成员在派生类中都不可直接访问;(2)基类中的公用成员当类的继承方式为公用继承时,基类中的所有公用成员在派生类中仍以公用成员的身份出现;62当类的继承方式为私有继承时,基类中的所有公用成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有公用成员在派生类中都是以保护成员的身份出现。(3)基类中的保护成员当类的继承方式为7、公用继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现;当类的继承方式为私有继承时,基类中的所有保护成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。5.4.1公用继承公有继承的特点是:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,在派生类中是不可访问的。例5.1访问公有基类的成员#include#includeusingnamespacestd;classStudent{public:void8、get_value(){cin>>nu
3、stringaddr;};二、单继承与多继承一个派生类只有一个直接基类的情况,称为单继承,一个派生类同时有多个基类的情况,称为多继承。62XYZABC单继承多继承5.2派生类的声明方式(P153)单继承派生类的一般定义格式class派生类名:继承方式基类名{//派生类新增的数据成员和成员函数}说明:(1)三种继承方式:公有继承:classStudent1:publicStudent{//….};私有继承:classStudent1:privateStudent{//….};62保护继承:classStudent1:protectedStudent{//….};
4、例如:classStudent1:publicStudent{public:voiddisplay1(){cout<<"age:"<5、play1();继承新增数据成员1.派生类继承了基类的所有成员;2.增加新的成员;3.改变现有成员的属性和重新定义基类中已有的成员函数。625.4派生类成员的访问属性**基类成员在派生类中的访问属性三种不同的继承方式导致原来具有不同访问属性的基类的成员在派生类中具有不同的访问属性。在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivateprivatepublicprotectedprote6、ctedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected从表中归纳出:(1)基类中的私有成员无论哪种继承方式,基类中的私有成员在派生类中都不可直接访问;(2)基类中的公用成员当类的继承方式为公用继承时,基类中的所有公用成员在派生类中仍以公用成员的身份出现;62当类的继承方式为私有继承时,基类中的所有公用成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有公用成员在派生类中都是以保护成员的身份出现。(3)基类中的保护成员当类的继承方式为7、公用继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现;当类的继承方式为私有继承时,基类中的所有保护成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。5.4.1公用继承公有继承的特点是:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,在派生类中是不可访问的。例5.1访问公有基类的成员#include#includeusingnamespacestd;classStudent{public:void8、get_value(){cin>>nu
5、play1();继承新增数据成员1.派生类继承了基类的所有成员;2.增加新的成员;3.改变现有成员的属性和重新定义基类中已有的成员函数。625.4派生类成员的访问属性**基类成员在派生类中的访问属性三种不同的继承方式导致原来具有不同访问属性的基类的成员在派生类中具有不同的访问属性。在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivateprivatepublicprotectedprote
6、ctedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected从表中归纳出:(1)基类中的私有成员无论哪种继承方式,基类中的私有成员在派生类中都不可直接访问;(2)基类中的公用成员当类的继承方式为公用继承时,基类中的所有公用成员在派生类中仍以公用成员的身份出现;62当类的继承方式为私有继承时,基类中的所有公用成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有公用成员在派生类中都是以保护成员的身份出现。(3)基类中的保护成员当类的继承方式为
7、公用继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现;当类的继承方式为私有继承时,基类中的所有保护成员在派生类中都是以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。5.4.1公用继承公有继承的特点是:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,在派生类中是不可访问的。例5.1访问公有基类的成员#include#includeusingnamespacestd;classStudent{public:void
8、get_value(){cin>>nu
此文档下载收益归作者所有