C++继承方式

继承的格式

派生类定义格式:
   Class 派生类名 :  继承方式 基类名{
         //派生类新增的数据成员和成员函数
   };
   class 子类: 继承方式  父类名{
       //子类新增的数据成员和成员函数
   };

继承方式分类

  • public : 公有继承 (重要)
  • private : 私有继承
  • protected : 保护继承

父类个数分类:

  • 单继承:指每个派生类只直接继承了一个基类的特征 (一个父类 派生出 一个子类)
  • 多继承:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征(多个父类 派生出 一个子类)
  • 注意:子类继承父类,子类拥有父类中全部成员变量和成员方法(除了构造和析构之外的成员方法),但是在子类中,继承的成员并不一定能直接访问,不同的继承方式会导致不同的访问权限

案例1:公有继承 public

//设置一个父类
class Base
{
public:
    int a;
private:
    int b;
protected:
    int c;
};

//设置一个子类
class Son:public Base
{
public:
    //父类中的public数据  在子类中 也是public
    //父类中的private数据 在子类中 是不可见的
    //父类中的protected数据 在子类中 是protected的
    //子类的内部
    void showSon()
    {
        //b = 200;//不能直接访问
        c =300;//在子类 内部是可以访问的
    }
};

void test01()
{
    //子类的外部
    Son ob;
    ob.a = 100;
    cout<<"父类中的public数据a = "<<ob.a<<endl;

    //ob.b = 200;//在子类外 访问不了
    //ob.c = 200;//在子类外 访问不了

}

小结:

  • 父类中的public数据 在子类中 也是public
  • 父类中的private数据 在子类中 是不可见的
  • 父类中的protected数据 在子类中 是protected的
  • 总结:public 继承 父类中的私有数据 在子类 不可见 其他保持原样

案例2:保护继承protected

//保护继承
class Son1:protected Base
{
private:

public:
    //父类中的public数据  在子类中 也是protected
    //父类中的private数据 在子类中 是不可见的
    //父类中的protected数据 在子类中 是protected的
    //子类的内部
    void showbase(){
        a = 100;//子类内部可访问
        //b = 200;//不能直接访问
        c = 300;//子类内部可访问
    }
};
void test02()
{
    Son1 ob;
    //ob.a;//子类外不可访问
    //ob.b;//子类外不可访问
    //ob.c;//子类外不可访问
}

小结:protected继承

  • 父类中的public数据 在子类中 也是protected
  • 父类中的private数据 在子类中 是不可见的
  • 父类中的protected数据 在子类中 是protected的
  • 总结:保护继承 父类的私有数据 在子类中 不可见 其他数据 都变保护

案例3:私有继承 private

//保护继承
class Son2:private Base
{
private:

public:
    //父类中的public数据  在子类中 也是private
    //父类中的private数据 在子类中 是不可见的
    //父类中的protected数据 在子类中 是private的
    //子类的内部
    void showbase(){
        a = 100;//子类内部可访问
        //b = 200;//不能直接访问
        c = 300;//子类内部可访问
    }
};
void test03()
{
    Son2 ob;
    //ob.a;//子类外不可访问
    //ob.b;//子类外不可访问
    //ob.c;//子类外不可访问
}

小结:private私有继承

  • 父类中的public数据 在子类中 也是private
  • 父类中的private数据 在子类中 是不可见的
  • 父类中的protected数据 在子类中 是private的
  • 总结:私有继承 父类中的私有数据在子类中 不可见 其他变成私有

总结:在这里插入图片描述

不管啥继承方式:父类中的私有数据在 子类中不可见在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值