-A,uses-A和is-Ahas-A包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。uses-A一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。is-A机制称为“继承”。关系具有传递性,不具有对称性。,或称从类A派生类B 类A称为基类(父类),类B称为派生类(子类)AB1B2C1C2C3B1,B2的基类A的派生类C1,C2,C3的基类A的派生类(单继承)C3的基类B1,B2的派生类(多继承)B1的派生类类继承关系的语法形式 class派生类名:基类名表 { 数据成员和成员函数声明 }; class派生类名:基类名表 { 数据成员和成员函数声明 }; 访问控制基类名1,访问控制基类名2,…,访问控制基类名n访问控制表示派生类对基类的继承方式,使用关键字: public 公有继承 private 私有继承 protected 保护继承派生类对基类成员的使用,与继承访问控制和基类中成员性质有关公有继承 基类的公有成员派生类的公有成员 基类的保护成员派生类的保护成员私有继承基类的公有成员和保护成员派生类的私有成员保护继承基类的公有成员和保护成员派生类的保护成员不论哪种方式继承基类,#include<>classA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;}; //使用基类数据成员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-#include<>classA{public:voidget_XY(){cout<<"Entertwonumbersofx,y:";cin>>x>>y;}voidput_XY(){cout<<"x="<<x<<",y="<<y<<'\n';}protected:intx,y;};classB:publicA{public:intget_S(){returns;};voidmake_S(){s=x*y;};//使用基类数据成员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;};classAclassC:publicBclassB:-1公有继承的测试
第7章 继承 7.1 类之间的关系培训讲学 来自淘豆网www.taodocs.com转载请标明出处.