您的位置:首页 > 编程语言 > C语言/C++

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

2015-01-20 16:36 239 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: