继承的优势

在实际开发中,组件按照复用性可以划分为两类:可复用组件不可复用组件

可复用组件很好理解,一个按钮,一个表格都是可复用组件,它们是组成页面的基本元素,如果你组件设计得够好, 可以复用在绝大多数页面开发中。但是有一种组件你没法抽象它,那就是页面级组件。实际开发中,不同页面之前 可能千差万别,你没法定义一个组件来适用于绝大多数页面,基本上都是一个页面一个组件。可是同一个项目,你 又会发现每个页面之前可能存在共同点,比如有相似的头部。注意,仅仅只是相似而已,你可能仍然需要在每个页 面中,对头部做特殊化定制。

针对这种情况,传统的做法是:将页面的骨架定义一个组件A,将页面的内容定义成另一个组件B,然后将B组件传入 A组件进行渲染。但这样做的弊端是,组件B无法控制组件A中定义的头部,如果要定制化头部,则必须通过A暴露的 接口来达到目的。当页面较多时,如果每个页面都有特殊的定制化需求,那A组件需要提供大量的接口来满足,势必 造成A组件的无限膨胀。

而继承却可以很好的解决这个问题,因为继承是代码层面的复用,而不是组件的复用,实际上A组件和B组件已经合 并成一个AB组件了,对AB组件来说,头部和内容区域都是它的一部分,自然他能控制页面的全部。头部定制化的逻 辑可以分散到各个派生的子组件中。

另外一个优势便是:继承可以 重写(override) 父类同名属性和方法,并且在你重写的过程中,你可以访问父类 同名属性和方法(super)。而这是其它类似参数传递或者混入(mixin)所无法做到的。