个人感觉在java中,如果子类继承父类,则java就是利用上溯机制,如果子类在找某个字段或这方法时在本身类不存在,开始上溯父类,如果父类存在则引用父类的字段或者方法,所以java中的继承有点像组合,不同的是我们组合不能自动上溯,继承可以自动上溯
还是有区别的,是概念上的。抽象的目的本来就是接近现实。以更好的方式理解。
区别肯定是有的,我的意思是继承是一种简单的组合,但是继承多了一种自动上溯机制
继承和组合的关系在于面对多态的时候有差异
继承表示的关系为1对n的关系
而组合呈现的关系是 n*n
继承表示的关系是1对n的关系而组合呈现的关系是n*n?,能详细说明下么
@幸福从不迟疑:
简单的来说拿轿车来说
如果大众 和qq都继承与车
大众有10个款型 qq有10个款型
那么继承下来要表示全部的车就要有20个子类(及1*n,n就是状态)
---------------------------------------------------
如果将内部字段用于组合
及车类里面有2个字段
品牌
款型
那么要表示20种类型那么就是(2*10,及n【品牌】*n【款型】)一共12(2+10)种类型
由上面可看出,如果要表示同样多种状态(qq和大众 一共20 种类型),使用组合的比继承有优势
@幸福从不迟疑: @小眼睛老鼠:
然后再说说继承的优势,继承的的规约是强制执行的,及表示的是如果不是这个格式的不可以,那么如果颁布规定,要求一定要怎么样的时候,那么就应该用继承
所以综上所诉,如果要表示多种状态,就应该用组合,而表示一种规约 那么就应该用继承
@小眼睛老鼠: 原来你说的1*n和n*n是这个意思,3q,受教了