欢迎来到天天文库
浏览记录
ID:27697513
大小:978.00 KB
页数:90页
时间:2018-12-03
《继承71类之间的关系》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章继承7.1类之间的关系7.2基类和派生类7.3基类的初始化7.4继承的应用实例7.5多继承小结7.1类之间的关系has-A,uses-A和is-Ahas-A包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。uses-A一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。is-A机制称为“继承”。关系具有传递性,不具有对称性。7.1类之间的关系继承是类之间定义的一种重要关系一个B类继承A类,或称从类A派生类B类A称为基类(父类
2、),类B称为派生类(子类)AB1B2C1C2C3B1,B2的基类A的派生类C1,C2,C3的基类A的派生类(单继承)C3的基类B1,B2的派生类(多继承)B1的派生类类继承关系的语法形式class派生类名:基类名表{数据成员和成员函数声明};7.2基类和派生类类继承关系的语法形式class派生类名:基类名表{数据成员和成员函数声明};7.2基类和派生类基类名表构成访问控制基类名1,访问控制基类名2,…,访问控制基类名n类继承关系的语法形式class派生类名:基类名表{数据成员和成员函数声明};7.2基类和派生类基类名表构成访问控制
3、基类名1,访问控制基类名2,…,访问控制基类名n访问控制表示派生类对基类的继承方式,使用关键字:public公有继承private私有继承protected保护继承派生类对基类成员的使用,与继承访问控制和基类中成员性质有关公有继承基类的公有成员派生类的公有成员基类的保护成员派生类的保护成员私有继承基类的公有成员和保护成员派生类的私有成员保护继承基类的公有成员和保护成员派生类的保护成员不论哪种方式继承基类,派生类都不能直接使用基类的私有成员7.2.1访问控制7.2.1访问控制7.2.1访问控制public成员protecte
4、d成员private成员public成员protected成员private成员基类派生类1.公有继承#includeclassA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<5、使用基类数据成员x,yprotected:ints;};classC:publicB{public:voidget_H(){cout<<"Enteranumberofh:";cin>>h;}intget_V(){returnv;}voidmake_V(){make_S();v=get_S()*h;}//使用基类成员函数protected:inth,v;};例7-1公有继承的测试7.2.1访问控制#includeclassA{public:voidget_XY(){cout<<"Entertwonumbers6、ofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<>h;}intget_V(){returnv;}voidm7、ake_V(){make_S();v=get_S()*h;}//使用基类成员函数protected:inth,v;};classAclassC:publicBclassB:publicA7.2.1访问控制例7-1公有继承的测试#includeclassA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<8、sB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基类数据成员x,yprotected:ints;};classC:publicB{public:voidget_H(){
5、使用基类数据成员x,yprotected:ints;};classC:publicB{public:voidget_H(){cout<<"Enteranumberofh:";cin>>h;}intget_V(){returnv;}voidmake_V(){make_S();v=get_S()*h;}//使用基类成员函数protected:inth,v;};例7-1公有继承的测试7.2.1访问控制#includeclassA{public:voidget_XY(){cout<<"Entertwonumbers
6、ofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<>h;}intget_V(){returnv;}voidm
7、ake_V(){make_S();v=get_S()*h;}//使用基类成员函数protected:inth,v;};classAclassC:publicBclassB:publicA7.2.1访问控制例7-1公有继承的测试#includeclassA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<8、sB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基类数据成员x,yprotected:ints;};classC:publicB{public:voidget_H(){
8、sB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基类数据成员x,yprotected:ints;};classC:publicB{public:voidget_H(){
此文档下载收益归作者所有