Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236994
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-09-27 22:50:01

1.什么是继承

A继承B,说明的是A是B的一种,并且B的所有行为对A都有意义
eg:
A=WOMAN B=HUMAN
A=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟可不成
 
2.继承的一些规则

1)在继承中,所有继承的东西都默认为private,就算它原来在基类是public的,如果希望在子类中也是public,那么在继承时应该使用public声明
2)如果派生类重载了基类的函数,那么派生类的对象调用这些函数时将默认为调用派生类的版本,如果要用基类的版本则要加上类名和范围分解符
3)当创建一个派生对象时将默认调用基类的构造函数,其实不管是组合还是继承,基本思想就是在进入新类的构造函数体之前调用所有的构造函数。
4)有一些函数是非自动继承的:构造函数,析构函数,operator=
 
3.什么是组合

若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。
例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生而成
 
4.两者的选择

is-a关系用继承表达,has-a关系用组合表达
继承体现的是一种专门化的概念而组合则是一种组装的概念
另外确定是组合还是继承,最清楚的方法之一就是询问是否需要新类向上映射,也就是说当我们想重用原类型作为新类型的内部实现的话,我们最好自己组合,如果我们不仅想重用内部实现而且还想重用接口的话,那就用继承。
接口的重用对于多态性很重要
阅读(665) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-09-28 11:13:41

普拉多 http://www.praado.cn 收藏夹支持多级管理和模糊搜索,大大方便了在信息泛滥时代对有用信息的有效管理。