阅读随笔之组合与继承

组合:(has-a)将一个对象的引用置于新的对象中。(这是我自己的解释,不是专业术语)

继承:(is-a)继承不是复制基类的接口,当你创建一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你直接创建对象是一样的。二者的区别在于,后者来自于外部,而基类的子对象被包装在导出类对象内部。

阅读上面俩应该已经可以看出一点了,组合是来自于外部,而继承过来的则包装在你的导出类内部。但还是有些模糊。

组合通常用于想在新类中使用现有类的功能。

在继承的时候使用现有类,并开发一个他的通用版本,通常你使用一个通用类(几何形)将其特殊话(三角形,正方形),也就是java多态的表现。

上面两句话简单来说就是(is-a)是一个的时候用继承,(has-a)有一个的时候用组合。

一个最清晰的判断是不是需要用到继承就是问下自己需不需要从新类向基类进行向上转型,如果必须要向上转型,则继承是必须的,如果不需要,则自己需要好好考虑下

继承和组合都能从现有类型生成一个新的类型。组合一般是将现有类型作为新类型底层实现的一部分加以复用,而继承复用的是接口。能用组合就尽量不要用继承,组合更加灵活点。

 

 

我的简单理解,欢迎各位大牛评论区纠正和补充

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子鞋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值