C++面向对象编程 继承和派生

来源:互联网 发布:淘宝主板主图素材图片 编辑:程序博客网 时间:2024/06/04 08:33

                                                C++面向对象编程

继承是保持原有类的基础上进行扩展


继承关系具有双重关系作用:

          1)作为类的构造机制, 继承通过扩充, 组合现有的类来构造新的类
    
           2) 作为类型的构造机制, 如归B继承A则所有要求对象A类型的地方也可以接受B类型的方法

派生类的概念
                   

                   1)有一个基类派生的继承称作是单继承
   
                    2) 从多个基类派生的继承称作是多继承


         1、 单继承
  
          class   派生类名:继承方式 类名
          {
 
                           派生类新定义成员;
         };

        eg .
     
        class A 
       {
     
         }
        class  B: public A 
       {
               //类B新添加的成员函数
         }

        2、多继承
       class 派生类名:继承方式1  , 继承方式2 基类名2 ,.....
       {
             //派生类新定义的方式
       };
       
        eg.
          class A 
          {
       
                       //类的成员
            }
            class  B
           {
                      //类的成员
            };

           class  C: public A , private B
           {
                  //类C新添加的成员
           };
 
            派生类的生成过程:
 
                                  1)吸收 基类成员

                                   2)改造基类成员
                                  
                                    3)添加新的成员
 
                    继承方式  : 
                                            1)公有继承
                                            2) 保护继承 
                                            3) 私有继承
   公有类继承:

#include<iostream>using namespace std;class A{    public :      int x;};class B :public A{    private:       int y;    protected:       int z;    public:        int m;        void setvalue(int a, int b, int c, int d)        {            x = a;     //继承在类下因此B中依然有共有成员x            y = b;     //这里是说的是公有继承            z = c;            m = d;        }        void disp()        {            cout<<"y = "<<y<<endl;            cout<<"x = "<<x<<endl;        }};int main(){    B obj;    obj.setvalue(1,2,3,4);    obj.disp();    return 0;}


          私有继承:
#include<iostream>using namespace std;class A{    private:       int x;    public :      void  setx(int i){ x = i;}      void dispx(){cout<<"x = "<<x<<endl;}};class B: private A{    //私有继承 派生类的对象可以直接访问它们, 但是在类外部通过派生类的对象无法访问它们    private:        int y;    protected:        int z;    public:        int m;        void setvalue(int a, int b, int c, int d)        {            setx(a)  ;//继承上面的类,下面可以进行直接调用            y = b;    //private protect 在类的内部是可以直接调用的            z = c;            m = d;        }        void disp()        {            dispx();//直接调用            cout<<"y = "<<y<<endl;            cout<<"z = "<<z<<endl;        }};int main(){    B obj;    obj.setvalue(1,2,3,4);    obj.disp();    obj.m = 4;  //直接对共有数据成员进行赋值操作    cout<<"m = "<<obj.m<<endl;    return 0;}


            
0 0
原创粉丝点击