您的位置:首页 > 其它

继承与组合的区别

2016-01-30 17:31 267 查看
组合与继承都是一种常用的代码复用技巧。他们之间的的区别有如下几点。

has-A/is-A

两个类的组合属于整体与局部的关系,就例如人体与手、脚、眼睛等的关系。而两个类的继承属于从属关系,就例如父亲与儿子的关系。

松耦合/紧耦合

继承中,子类能够看到父类测实现细节,能够通过重写来改变父类的行为,一定程度上破坏了封装性,是一种紧耦合。

组合中,整体类只关心子类的功能,不关心具体的实现,也无法改写父类的接口,是一种松偶尔。

继承又叫白盒复用,组合又叫黑盒复用。

使用规则

如果类A跟类B毫不相干,如果A为了使用B的功能,不要使用继承,用组合。

如果类A是类B的一种(a kind of),则使用继承。例如人和男人的关系。

如果类A是类B的一部分(a part of),则使用组合。例如人体跟手、脚的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: