C++公有继承、保护继承、私有继承

C++公有继承、保护继承、私有继承

  • 先上代码
  • 保护继承简单总结
  • 私有继承简单总结
  • 公有继承官方总结
  • 保护继承官方总结
  • 私有继承官方总结
  • 其他

先上代码

#include
using namespace std;

class Animal{

public:
   string name;
   int age;
private:
    double weight;
};

/*测试私有继承,Dog2和Xiudog2*/
//私有继承:自己可以拿到从父辈那里的public和protected遗产,
//但是私有继承就是很自私,自己从父辈哪里拿到的资产仅仅是自己用,
//绝对不给自己的孩子用
class Dog2 : private Animal
{
    void run() {
        this->age=11;
        this->name="Dog2";
    }
};
class XiuDog2 : public Dog2
{
    void run(){
        //this->age = 6;//报错
        //this->name = "hei嘿";//报错
    }
};

/*测试保护继承,Dog1和XiuDog*/
//保护继承:自己可以拿到从父辈那里的public和protected遗产,
//而且保护继承很无私,自己从父辈哪里拿到的资产 不仅仅 是自己用,
//也可以给自己的孩子用
class Dog1 : protected Animal
{
    void run(){
        this->name = "dog1";
        this->age = 6;
    }
};

class XiuDog : public Dog1
{
    void run(){
        this->age = 6;//正确
        this->name = "hei嘿";//正确
    }
};

/*测试公有继承,Dog*/
class Dog : public Animal
{
    void run(){
        this->name = "dog";
    }
};

int main()
{
    
   return 0;
}

保护继承简单总结

保护继承:
我从父亲那继承过来的public和protected成员,来到我这都变成protected,我的儿子公有继承我时,我儿子类的内部仍然可以使用我从我父亲那继承过来的成员

私有继承简单总结

私有继承:
我从父亲那继承过来的public和protected成员,来到我这都变成private,我的儿子公有继承我时,我儿子类的内部不可以使用我从我父亲那继承过来的成员

公有继承官方总结

公有继承时,基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中通public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员.

保护继承官方总结

保护继承时,基类中各成员属性均变成protected,并且基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何成员

私有继承官方总结

私有继承时,基类中各成员属性中private成员被隐藏.派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何成员.

其他

不知道什么是基类,什么是派生类,什么是成员,什么是基类对象,什么是派生类对象----->请看下边的代码示例:

#include
using namespace std;

class Aniaml//Animal就是基类
{
public:
    string name;
    void run(){};//name和run就是成员
};

class Dog : public Aniaml//Dog继承了Animal,Dog就是Aniaml的派生类
{
    void fun(){
        this->name= "修狗";
    }
};

int main(){

    //何为对象?
    Aniaml animal;
    //animal就是(基类)对象,
    //可以类比===>int a;
    //Aniaml相当于一种类型,与int对应,即:类≈类型;
    //animal相当与一个变量,与a对应,即:对象≈变量.

    Dog dog;//dog就是Animal的派生类的对象

    return 0;
}

你可能感兴趣的:(c/c++知识二次稳固,c++,开发语言)