【C++】多态:C++编程的魔法师(1)

06-02 591阅读

 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家

点击跳转到网站

一、继承和组合

1、继承

在上篇文章中,已经详细介绍过继承:

https://blog.csdn.net/hffh123/article/details/143824040?spm=1001.2014.3001.5501

2、组合:

通俗来讲就是一个类的对象作为另一个类的成员,这种关系就是组合。

class A
{
};
class B
{
protected:
	A a;
};

3、组合和继承的相同与不同

(1)、组合和继承都是复用的体现。

(2)、继承是白箱复用,组合是黑箱复用。白就是指看不见,黑指看得见。

(3)、继承父类的子类是可以在类内部使用保护成员的,但是组合中,被作为成员的类对象不能使用自己的保护成员,因为相当于在类外面。

【C++】多态:C++编程的魔法师(1)

(4)、因为我们要遵循“高内聚,低耦合”,所以能用组合就用组合。这就表明组合的耦合性比继承低。耦合性越低,可维护性就越好,可维护性指迭代更新等等。

举例:

比如A类有100个成员,其中10个为公有成员,90个为保护成员,因为组合访问不了保护成员,A类成员修改时,对组合关系影响就远远小于继承关系。

4、知识点介绍

(1)public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。
(2)组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。
(3)优先使用对象组合,而不是类继承 。
(4)继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称
为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言:在继承方式中,基类的
内部细节对子类可见 。继承一定程度破坏了基类的封装,基类的改变,对派生类有很
大的影响。派生类和基类间的依赖关系很强,耦合度高。
(5)对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象
来获得。对象组合要求被组合的对象具有良好定义的接口。这种复用风格被称为黑箱复
用(black-box reuse),因为对象的内部细节是不可见的。对象只以“黑箱”的形式出现。
组合类之间没有很强的依赖关系,耦合度低。优先使用对象组合有助于你保持每个类被
封装。
(6)实际尽量多去用组合。组合的耦合度低,代码维护性好。不过继承也有用武之地的,有
些关系就适合继承那就用继承,另外要实现多态,也必须要继承。类之间的关系可以用
继承,可以用组合,就用组合

二、多态的概念:

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。

(一)、虚函数的概念(关键字:virtual)

  虚函数:即被virtual修饰的类成员函数称为虚函数: 
class Person
{
public:
	virtual void fun()
	{
		cout 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码