继承、组合

本文探讨了面向对象编程中的继承和组合两种代码复用方式,解释了它们的区别。继承是子类继承父类的特征和行为,体现了is-a关系,而组合则通过对象的组合形成更复杂的整体,表现为has-a关系。多继承允许一个类继承多个父类,带来灵活调用不同方法的优点,但也存在歧义问题。此外,文章还简要介绍了不使用继承时的代码组织方式。
摘要由CSDN通过智能技术生成

一、继承和组合的区别

类的组合和继承一样,都是面向对象中代码复用的方式,是软件重用的重要方式。组合和继承都是有效地利用已有类的资源。

继承

  • 继承是面向对象三大基本特征之一(继承,封装,多态),继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
  • 继承强调的是is-a关系。
  • 在继承中,父类的方法内部实现细节对子类可见,是白盒式复用
  • 继承在编码过程中就要指定具体的父类,其关系在编译期就确定

组合

  • 组合是通过对现有对象进行拼装即组合产生新的具有更复杂的功能
  • 组合体现的是整体和部分,强调的是has-a的关系。
  • 组合中,对象之间的内部细节不可见,其代码属于黑盒式复用
  • 组合的关系一般在运行时确定
    在这里插入图片描述

二、多继承有什么优点缺点

在这里插入图片描述
在这里插入图片描述

(2)使用虚拟继承,使得多重继承类Programmer_Author只拥有Person类的一份拷贝。比如在11行和17行的继承语句中加入virtual就可以了。

优点:

多继承,可以调用多个基类的不同方法

缺点:

多继承的类,如果调用基类的基类中的方法,容易造成歧义

三、继承

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不使用继承:
在这里插入图片描述
在这里插入图片描述
使用继承:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值