C/C++高级程序员必经之路-继承(入门篇)

       花开花落花无悔,缘来缘去缘如水,各位我们又见面了。相信看到这篇博客的同学都是有缘分的,所以呢我决定给你们上点猛料,那么是什么猛料呢? 给大家讲点系统的知识,什么是继承?

我们都知道C++的核心就是面向对象编程,那这个核心就是类和对象,那么这个类的讲究就很多了,就算不从效率方面考虑单纯从业务逻辑上考虑也比较复杂。对于一个业务来说,重复性的代码不宜过多,这样开发效率会降低,对于后期的维护也是个问题,而且对于代码的整体架构来说是非常致命的。

那么使用继承就可以在一定程度上解决以上问题,由于继承并没有想的那么简单,其中菱形继承,虚继承,多态等都是高阶用法,入门篇就说继承的基本用法,好了话不多说,赶紧发车。

首先什么是继承?对于人类社会来说,大部分情况下继承就是得到父亲的资产,那么对于C++中的类来说呢?其实也差不多,子类一样会继承父类所有的成员函数以及数据成员,真传一句话,假传万卷书。那么怎么玩呢?请看以下代码:

#include <iostream>

using namespace std;

class Farthe

{

public:

        Farthe(){  money  =  1000000;}

        ~Farthe(){}

        int getMoney()

        {

                cout<<"查看Farthe的存款"<<endl;

                return  money;

        }

private:

        int money;

};

class Son:public Farthe         //继承自Farthe类

{

public:

       Son(){ money_son  =  10000;}

        ~Son(){}

        short getSonMoney()

        {

                cout<<"查看Son的小金库"<<endl;

                return  money_son;

        }

private: 

        short money_son;

};

以上代码是一个很基础的继承例子,这个例子是儿子继承了父亲的资产,他自己也有一定财富,所以按照现实角度一般情况来说,Son类可以使用父亲给他的钱(注意:我这里的继承使用了public),所以我们就可以使用子类对象Son的实例来调用getMoney()函数,以此来查看和使用你老爹的资产。那么能否成功呢?如下所示:

很明显,成功达到了目的。那么请大家思考一个问题,人类社会中既然有正常状况,那么会不会有非正常状况呢?当然有,而且新闻不是比比皆是吗?如果你是私生子的话,虽然名义上你有继承的权力,但是我们都知道实际上,你大概率无法取得这笔资产。那么在C++的继承中,这种情况是怎么表示呢?

C++的继承方式有三种,第一种就是上诉的public继承,这种我们叫公有继承。第二种就是私生子情况的继承方式,private私有继承,怎么样?是不是很形象。既然叫私有继承,那么会有什么结果产生呢?

在此之前给大家补充一个知识点,C++类中一共有三种权限,一种是public,一直是private,一种是protected。这里默认大家已知这三种权限各自代表的含义(如果希望我单独出一篇博客来说,那么请在评论区留言)。

将以上代码class Son:public Farthe改成class Son:private Farthe就是私有继承方式了。那么有什么用呢?我们再次以上面的方式访问一下父类的成员函数看看?

很明显,我们可以发现无法访问getMoney()函数,这究竟是为什么呢?别急,我来揭晓谜底。

实际上C++的private继承是一种降级保护继承,简单点来说,private继承会将父类的任何成员函数以及成员属性的权限全部修改为private属性,也就是说变得在外界无法访问的情况。那么在什么情况下可以使用呢?请看下图:

在成员函数内部就能够访问了,其实对三种权限比较熟悉的同学就很好理解。

那么最后一种继承方式protected呢?其实我们可以进行一个推导,protected继承方式会将public权限全部降级为protected。至于结果其实和上述的差不多,那么就有同学问了。既然protected和private继承差不多,那么意义在哪呢?

实际上我们常用的继承只有public继承方式,而剩余两种,private继承方式是舍弃了再次继承的方式(也就是说不会再有孙子了,现实生活中就是丁克)。protected继承方式在再次继承的时候有更加安全的作用(可实际上太多余了,我们可以在定义权限的时候做到)。

总结以上三种继承方式:

public:保留父类的成员属性权限,不进行改变

private:将所有的权限降级为private

protected:将public权限降级为protected,其他不变

以上就是入门篇的内容,虽然是入门篇,可是三种继承方式和三种内部权限结合起来玩的话,一样可以绕晕很多人,哈哈哈。

关注我,带你成为高级程序员,我是程序员玉无涯,下次见......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值