复合优于继承

   在代码的复用方面,java提供了复合,代理和继承三种方式。复合是显示的复用代码,继承是隐式的复用,而代理是复合和继承的中庸之道。这里最主要讨论下“复合优于继承”这一观点。

  复合优于继承:继承的确在代码复用这一块做出了很大的贡献,通过继承我们可以给子类定义一些基本的属性,方法减少重复的代码。在同包下明确的is-a的关系,现有类就是用来继承的或者有很详细的说明文档的类中,继承是一个很不错的选择。但是对于不是很明确的关系等的情况下,继承并不是一个很多好的选择。继承破坏了面向对象思想中的封装特性,这是因为子类继承父类会对父类的封装进行重写而破坏原有的父类的封装。当子类不去覆盖父类的一些方法,并调用父类的方法,有可能调用的是父类的自用的代码,我们并不能保证父类的这些方法不会随着父类的更新而不改变,当父类改变的时候,那么子类可能就可能发生错误。

  复合是将现有类作为新的类的一个私有域(一般情况下),这样不会对现有类进行任何的覆盖,保持现有类的封装,并且现有类的改变也不会对新的类造成影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值