白盒复用,黑盒复用
语言在继承上的设计带来了便利,这些便利在某些情况下恰恰又演变成了缺点
1.首先理解是什么,继承和组合的概念
2.继承的优点,但在一定条件下,优点反而是缺点,
父类所有公共的属性和方法都被子类无条件继承,子类不能选择,封装性不好,有可能造成误用,父类实
现中的任何变化必然会导致子类发生
变化
实际对象千变万化,若每一类的对象都有他们自己的类,类层次结构的迅速膨胀
继承 – 发生在编译时,因为它是静态的
代理或者组合 – 发生在运行时,因为它更加具有动态性和灵活性。
(主要是讲关系的确定时间)
Q.你有没有听说过“组合优于继承”这样的说法呢?如果听说过的话,那么你是怎么理解的呢?
A.继承是一种多态工具,而不是一种代码复用工具。有些开发者喜欢用继承的方式来实现代码复用,即使是在
没有多态关系的情况下。是否使用继承的规则是继承只能用在类之间有“父子”关系的情况下。
不要仅仅为了代码复用而继承。当你使用组合来实现代码复用的时候,是不会产生继承关系的。过度使用
继承(通过“extends”关键字)的话,如果修改了父类,会损坏所有的子类。这是因为子类和父类的紧耦合
关系是在编译期产生的。
不要仅仅为了多态而继承。如果你的类之间没有继承关系,并且你想要实现多态,那么你可以通过接口和
组合的方式来实现,这样不仅可以实现代码重用,同时也可以实现运行时的灵活性。
这就是为什么四人帮(Gang of Four)的设计模式里更倾向于使用组合而不是继承的原因。面试者会在你的答
案里着重关注这几个词语——“耦合”,“静态还是动态”,以及“发生在编译期还是运行时”。运行时的灵
活性可以通过组合来实现,因为类可以在运行时动态地根据一个结果有条件或者无条件地进行组合。但是继承
却是静态的。
相关推荐
C++继承与组合类的综合案例.cpp
C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”
主要介绍了Python面向对象类继承和组合,结合实例形式分析了Python3面向对象继承的原理、用法以及继承与组合相关使用技巧,需要的朋友可以参考下
本文将介绍组合和继承的概念及区别,并从多方面分析在写代码时如何进行选择。文中通过示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来一起看看吧。
熟练掌握三种继承以及虚继承的概念知识,概念填空题 简答题 派生类如何实现对基类私有成员的访问?...继承与组合之间的区别与联系是什么?派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?
组合和继承的主要目的是为了代码的重用。组合是将其他类的对象作为成员使用,继承是子类可以使用父类的成员方法。
编程思想的第十四章,代码,本人亲测通过后才上传的 主要是讲组合和继承的
2019-11-25 王争设计模式之美进入课程讲述:冯永吉时长 10:51大小 9.95M在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用
Line是继承Point类的,完成了一些小功能
本文实例讲述了Python面向对象程序设计之类的定义与继承。分享给大家供大家参考,具体如下: 定义类: class A: def __init__(self, name): self.name = name def say(self): print self.name def __del__...
C++程序设计课件 第11章 继承与派生 11.1 继承与派生的概念 11.2 派生类的声明方式 11.3 派生类的构成 11.4 派生类成员的访问属性 11.5 派生类的构造函数和析构...11.8 继承与组合 11.9 继承在软件开发中的重要意义
【Android进阶】(1)用继承和组合方式自定义控件 相关工程。
付哲C课程继承与功能组合.zip
编程思想的第十四章,代码,本人亲测通过后才上传的 这段代码是介绍组合和继承的联合
付哲-C 课程-继承与功能组合
java中继承和组合中图形的简单类的定义 public abstract class Shape{ //抽象类Shape public abstract void draw(); }……………………
ch12 组合与继承
编程思想的第十四章,代码,本人亲测通过后才上传的 这段是关于组合和继承的介绍