ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++第六课:类的使用【个人见解】

2019-12-28 20:55:53  阅读:263  来源: 互联网

标签:个人见解 函数 第六课 继承 子类 多态 C++ 小编 父类


C++语言的三大特点,继承、封装、多态。

继承说的就是子类能延续父类的行为(函数);封装为了能将父类的行为(函数)进行包装化供子类调用。那么多态呢,又是怎么回事呢?

多态,根据网上搜索的资料,都说是子类在继承父类的基础上,将父类的函数重写和修饰符重写。说简单点就有点像是,子类继承了父类的函数行为,将其多样化表现出来,不局限于一种方式。

举个例子,动物存在着睡眠状态、吃食物的动作,以及其他的动作,这里就表现出三种行为。再想到鱼时,是不是可以想象到它的这些动作。但是有没想过,难道所有的动物都有如此动作吗?是也不是!

为何这么说?

动物有以上三种行为,但是却不同于鱼的表现形式,可以想象下,狗的行为会和鱼的行为相同吗?当然不是。这里就涉及到多态的理念。

那么问题来了?在C++语言中,如何以多态形式表现出来呢?

Animal.h 作为父类

#ifndef _ANIMAL_H_
#define _ANIMAL_H_
class Aniaml
{
public:
	virtual void sleep() = 0;
	virtual void eat() = 0;
	virtual void run() = 0;
};
#endif

在创建一个子类,Fish.h。

在这里,或许有人疑惑,明明是两个单独的类,怎么就说成是继承的关系?这里就引用到继承的写法:

 

 这就是继承的写法,这里小编给大家一个坑,不管是不是坑,先运行下看看就知道了。我们再遇到问题时是有缘由地,先看看这些问题的样式,然后才好对症下药。

这里的问题大同小异,说明个问题,纯虚拟类在被继承后,子类出现了无法实例化(初始化)的问题。

请记住这种问题样式,然后再看看父类上有什么不一样的地方,是不是很奇怪,多了virtual关键字。这就是纯虚拟的意思,何意?

告诉编译器,此类是虚类。说到虚类学问多了,小编不多说,自己有兴趣可以动手查查他人的博客。

既然是虚类,那么子类在继承虚类的时候,就需要将虚类的函数全部重写(OverRide)。

有没有感觉到什么?父类的函数明明什么都没有,为什么需要重写,查过他人的博客你就会发现,这就是规则,编译器的编译规则。当然小编不是说规则的,而是多态。

父类的函数不管它有没有具体的代码,对于子类而言,既然是继承关系,子类就必须要重写这些函数,来达到子类该有的行为(函数)。这里的有个前提,就是父类是虚类,函数是虚函数。

这是多态的表现形式,说白了就是不同的子类在继承父类的同时,子类能用父类给的函数形成一套子类的不同表现形式,这就是多态。

或许还不能明白,举个例子说就是,狗的行为是贴地睡觉,吃骨头,奔跑,而鱼的行为就是睁眼睡觉,吃水草,游走。

 都属于sleep()、eat()、run()函数中的一种表现形式,鱼和狗两种动物都继承了Animal(动物)这个类,将三种函数都能以不同的方式表现出来,这就是多态。

看下面代码:

Fish.h            Fish.cpp                  Dog.h        Dog.cpp

 

 重写后函数,它们的差别请看文字上,将父类的三种函数以不同形式表现出来,而不是局限于某种动作。个人估计,这是为了方便行事,不可能为了各种各样的函数都写一个,这样只会浪费时间,浪费精力。而出现了这种方式,给编译带来了便利。

 然后我们在主体源文件上,敲上:

Fish fish;

fish.eat();

Dog dog;

dog.eat();

就可以打印出设计的效果。

在这里,写了一大堆的文字,就是告知:继承关系后多态的表现形式。没那么复杂,别看到三大特点几个字,就认为有多难以理解。事实上,多态想表达的意思就是这样的。

用到多态时,一定要记住,看清父类到底是不是虚类,如果确定是,你就把所有虚函数重写在子类当中,当然具体的实现方式,看后面小编如何操作。

浅显的认知,只需要知道这点就够了。

个人建议:多看看他人的博客,关于多态的理解,这里只是个人的见解,没有那么多专业词,只是为了用通俗的话便于理解。

下面小编再说说,类到底如何用?

我们在拿到一个项目都会头疼,明明懂了,但是一旦自己敲起来时就那么难呢?

在于一个问题,就是基础。还不够扎实,以后用到类是必不可少的!

每个项目可以说,都存在着,这就是小编下面要说的。

为了不让代码显得臃肿,让代码看起来更像那么回事,也更便于修改,修复,现在知道C++的实用之一了吧?

每一章内容,小编都会总结一些东西,当然这章也少不了。

学习任何东西,不能急于求成,这是一门学问,可以说是学到老也学不完的领域。学到哪算哪,够用就足够了!

标签:个人见解,函数,第六课,继承,子类,多态,C++,小编,父类
来源: https://www.cnblogs.com/VisiousDragon/p/12112981.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有