• 惊艳的继承_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.不同的继承方式可以改变继承成员的访问属性

  • 相关阅读:
    codeforces 652B z-sort(思维)
    poj 3268 Silver Cow Party(最短路)
    POJ 2243:Knight Moves(BFS)
    POJ 1107:W's Cipher(模拟)
    POJ 1008 Maya Calendar(模拟)
    Hdu3436-Queue-jumpers(伸展树)
    主席树的另一种写法
    Hdu5785-Interesting(回文串处理)
    Hdu5008-Boring String Problem(后缀数组)
    RMQ模板
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/7645554.html
Copyright © 2020-2023  润新知