惊艳的继承_14

Posted 吕晓宁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了惊艳的继承_14相关的知识,希望对你有一定的参考价值。

一。继承的概念

  面向对象中的继承指类之间的父子关系

   1.子类拥有父类的所有成员变量和成员函数

   2.子类就是一种特殊的父类

   3.子类可以当作父类对象使用

   4.子类可以拥有父类所没有的方法和属性 

二。继承初体验

  1.子类继承父类直接默认继承private

  2.类中的protected 

    a。protect成员可以在子类中被访问,但不能在外界被访问

    b。protected成员的访问权限介于public和private之间

#include <cstdlib>
#include <iostream>

using namespace std;

class Parent
{
  protected:

        int a;
        
  public:
        Parent()
        {
            a= 1000;    
            
        }  
        void Print()
        {
            cout <<"a = "<< a << endl;    
            
        }
};

class Child : public Parent
{
    protected:
        int b;
    public:
        void set(int a,int b)
        {
            this->a = a;
            this->b = b;
        }
    
};

int main(int argc, char *argv[])
{
    Parent parent;
    Child  child;    
    child.set(1,2);
    parent.Print();
    child.Print();
//    child.a = 10000;
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}

三。继承与访问级别

  类成员访问级别设置的原则

  1. 需要被外界访问的成员直接设置位public

  2.只能在当前类中访问的成员设置为private

  3.只能在当前类和子类中访问的成员设置为protected  

     

  公式:继承成员对外的访问属性

      = Max{ 继承方式,父类成员访问级别}。

  

#include <cstdlib>
#include <iostream>

using namespace std;

class A
{
private:
    int a;
protected:
    int b;
public:
    int c;
    
    A()
    {
        a = 0;
        b = 0;
        c = 0;
    }
    
    void set(int a, int b, int c)
    {
        this->a = a;
        this->b = b;
        this->c = c;
    }
};

class B : public A
{
public:
    void print()
    {
 //       cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

class C : protected A
{
public:
    void print()
    {
  //      cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

class D : private A
{
public:
    void print()
    {
 //       cout<<"a = "<<a;
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};

int main(int argc, char *argv[])
{
    A aa;
    B bb;
    C cc;
    D dd;
    
    aa.c = 100;
    bb.c = 100;
 //   cc.c = 100;
//    dd.c = 100;
    
    aa.set(1, 2, 3);
    bb.set(10, 20, 30);
  //  cc.set(40, 50, 60);
 //   dd.set(70, 80, 90);
    
    bb.print();
    cc.print();
    dd.print();
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}

五。小结

  1.继承是一种类之间的关系,子类是一种特殊的父类

  2.子类通过继承可以得到父类的所有成员

  3.private 成员可以被子类继承但不能被子类访问

  4.protected成员只能在当前类和子类中被访问

  5.不同的继承方式可以改变继承成员的访问属性

以上是关于惊艳的继承_14的主要内容,如果未能解决你的问题,请参考以下文章

14.3继承

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

MySQL中的这14个神仙功能,惊艳到我了!!!

MySQL中的这14个神仙功能,惊艳到我了!!!