如果类的颗粒度足够细 有时候多继承真的很好用啊,不是吗?

wymen11 2017-02-20 11:11:12
我现在有个疑问,觉得多继承也有很方便的时候,取消了怪可惜,比如如果我们的类的功能足够单一,那么使用多继承就非常方便地实现功能组合,比如三个功能单一的类,类A,类B,类C,而3个业务需要用到上面3个类,类A是业务一都用到的,而类B是业务二和业务三用到的,类C是业务一和业务二用到的,如果有多继承的话,只需要class 业务一:classA,classC;class业务二:classA,classB,classC;class业务三:classA,classB;这样是不是多继承很方便呢只要类A,B,C功能足够单一也不会引起混乱啊,单继承实现起来就相对麻烦点吧,觉得多继承还是很有用的取消了觉得很可惜,或许我没有明白过来,还请高手指点下迷津啊
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO临时工Oo 2017-02-20
  • 打赏
  • 举报
回复
相对C++而言,Java取消了指针(内存地址操作)的概念,而使用的是引用,引用其实也可以看作是一个地址,但引用的是JVM的地址,而不是操作系统掌管的内存的地址。 同样,相对C++而言,Java取消了多继承。 因为,在一定环境下,C++指针,不方便管理,容易出未知BUG; 同理,在一定环境下,C++多继承,也不方便管理,容易引起歧义。 因此,Java取消多继承,是一种Java相对C++的局部优势。 同时,Java也有其它方案可以实现多继承的特征,因此Java程序设计和C++程序设计必须有一定不同,包括设计思想和代码风格。 比如有3个商店,商店A卖女装、商店B男装、商店C卖童装。 如果有1个商店D三个都想卖,在C++可以同时继承ABC, 在Java中可以这样,把D的概念提升一下:假设D是一个商场,商场里有三个功能型的商店 class D{ A a; B b; C c; } 如果进一步,可以把ABC的共性抽取一下,形成一个接口Market,共有一个pay(买单)方法 interface Market{ void pay(); } 然后让ABC都实现Market。
bangdengmian9784 2017-02-20
  • 打赏
  • 举报
回复
组合优于继承
ryuugu_rena 2017-02-20
  • 打赏
  • 举报
回复
java只是用接口实现了多继承而已,哪里取消了?
wymen11 2017-02-20
  • 打赏
  • 举报
回复
上面的例子还是不太明白,如果商店D要同时买卖男装,女装,童装的话,用组合的话,不是要写多3个方法来调用A的男装销售,B的女装销售,C的童装销售,这样相对多继承不就麻烦了吗?多继承直接继承过来就完事了

50,547

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧