在一个类中以另一个类的对象作为数据成员的,称为类的组合(composition)。
例:声明Professor(教授)类是Teacher(教师)类的派生类,另有一个类BirthDate(生日),包含year,month,day等数据成员。可以将教授生日的信息加入到Professor类的声明中
class Teacher//教师类
{public:
┆
private:
int num;
string name;
char sex;
};
class BirthDate //生日类
{ public:
┆
private:
int year;
int month;
int day;
};
class Professor:public Teacher //教授类
{public:
┆
private:
BirthDate birthday; //BirthDate类的对象作为数据成员
};
Professor类通过**继承,从Teacher类得到了num, name, age, sex等数据成员;通过组合**,从BirthDate类得到了year, month, day等数据成员。
- 继承是纵向的,组合是横向的**。 **
- 如果定义了Professor对象prof1,显然prof1包含了生日的信息。通过这种方法有效地组织和利用现有的类,大大减少了工作量。