# coding=utf-8 # * 一般情况下,当一个基类写好之后,我们也许不愿意去改动,也不能改动,原因是# * 这样的在项目中用得比较久的基类,一旦改动,也许会影响其他功能模块,但是,# * 又要在该类上面添加功能.使用继承,当在A阶段,写出继承类,用过一段时间,发# * 现又要添加新功能,于是又要从原始类或A阶段的类继承,周而复始,慢慢的,子类# * 就越来越多,层级就越来越深.然而,事实上,在C阶段需要A阶段的功能,但不需要# * B阶段的功能,在这种复杂情形下,继承就显得不灵活,于是…