java组合 继承_java中继承的好处是什么,在组合和继承中该如何取舍?

本文探讨了组合与继承两种面向对象编程中的关系模式。组合关系强调松耦合和动态组合,而继承则提供了接口继承与代码复用。然而,继承可能导致紧密耦合和扩展复杂性。文章通过实例分析了继承的潜在问题,如空实现、多重继承导致的代码层次深和难以维护。作者提倡在设计时谨慎选择合适的关系模式。
摘要由CSDN通过智能技术生成

合 关 系

优点:不破坏封装,整体类与局部类之间松耦合,彼此相对独立

优点:具有较好的可扩展性

优点:支持动态组合。在运行时,整体对象可以选择不同类型的局部对象

优点:整体类可以对局部类进行包装,封装局部类的接口,提供新的接口

缺点:整体类不能自动获得和局部类同样的接口

缺点:创建整体类的对象时,需要创建所有局部类的对象

继 承 关 系

优点:创建子类的对象时,无须创建父类的对象

优点:子类能自动继承父类的接口

缺点:子类不能改变父类的接口

缺点:破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性

缺点:不支持动态继承。在运行时,子类无法选择不同的父类

缺点:支持扩展,但是往往以增加系统结构的复杂度为代价

举几个典型的继承的问题

空实现,破坏封装性,想想你的代码中是不是有这样的子类

多重继承,只是为了扩展不同的实现,比如有任务,上传继承自任务,备份任务继承自上传任务,相册备份和文件备份继承自备份任务,那个代码层次很深代码阅读起来很麻烦,不容易维护。

没法修改父类的行为,其实也是可以的,只不过写起来好麻烦各种函数封装,然后重写,比如父类的a->b->c的业务,在你这里要成为a->c->b了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值