类之间常见关系

来源:互联网 发布:电脑主机淘宝 编辑:程序博客网 时间:2024/06/05 09:38

1.使公有继承体现 “是一个” 的含义

记住一句话:公有继承意味着 “是一个” 的含义!
class Person { … };

class Student: public Person { … };

每个学生是一个人,但并非每个人是学生。

void dance(const Person& p); // 任何人可以跳舞
void study(const Student& s); // 只有学生才学习

Person p; // p是一个人
Student s; // s是一个学生
dance(p); // 正确,p是一个人
dance(s); // 正确,s是一个学生,一个学生”是一个”人
study(s); // 正确
study(p); // 错误! p不是学生

只是公有继承才会这样。也就是说,只是Student公有继承于Person时,C++的行为才会像所描述的那样。私有继承则是完全另外一回事,至于保护继承,好象没有人知道它是什么含义。

类之间常见的另两个关系是 “有一个” 和 “用…来实现”。
2.通过分层来体现 “有一个” 或 “用…来实现”
使某个类的对象成为另一个类的数据成员,从而实现将一个类构筑在另一个类之上,这一过程称为 “分层”。”分层” 这一术语有很多同义词,它也常被称为:构成(composition),包含(containment)或嵌入(embedding)。
公有继承的含义是 “是一个”。对应地,分层的含义是 “有一个” 或 “用…来实现”

0 0