派生类在已有的类(基类)中派生而来的,在原来类的基础上增加了原来的类没有的一些特性。
例如:车->运输车,若把车看成一个类,车是已有的称为父类,运输车被称为子类。车也被成为基类,运输车称为派生类。描述类的层次性的机制是继承,继承的过程称为派生。
说了这么多,派生类存在的意义呢?
派生类使得我们无需修改已有的类,只需在已有类的基础上,增加或者修改少量代码得到新的类,很好的解决了代码重用的问题。
那么派生类的概念就讲到这里吧,接下来我们聊聊基类成员在派生类中的访问属性。
派生类的继承声明方式:
class 派生类名:继承方式 基类名{
...
};
派生类的继承方式有三种:
1、private(私有继承)
2、public(公有继承)
3、protected(保护继承)
因为继承方式的不同,导致派生类继承来的访问属性也有一丢丢差异,那么接下来我就分别来介绍这三种访问方式的一些访问特性。
No1、private(私有派生类)
class A{
private:
int x;
public:
int y;
protected:
int z;
};
class B:private A{
x不可直接访问,因为x是声明的私有成员
y访问属性是私有成员类型
z访问属性是私有成员类型
};
No2、public(公有派生类)
class A{
private:
int x;
public:
int y;
protected:
int z;
};
class B:public A{
x不可直接访问,因为x是声明的私有成员
y访问属性是公有成员类型
z访问属性是保护成员类型
};
No3、protected(保护派生类)
class A{
private:
int x;
public:
int y;
protected:
int z;
};
class B:protected A{
x不可直接访问,因为x是声明的私有成员
y访问属性是保护成员类型
z访问属性是保护成员类型
};
那么根据以上描述的种种,我们可以做一些总结啦!
总结如下:
① 公有派生时,基类中的所有公有成员在派生类中也都是公有成员,基类中的所有保护成员在派生类中仍然是保护成员。
② 保护派生时,基类中的所有公有成员和保护成员在派生类中是保护成员。
③ 私有派生时,基类中的所有公有成员和保护成员在派生类中是私有成员。
**注意!**基类中的私有成员很任性的,它在任何方式的派生类中都不可以直接访问。
派生类做的工作:
首先:
派生类要继承基类的成员,当然不能把基类中所有成员打包接收过来,基类中的构造函数和析构函数不接收哦,除此之外,其他的所有就接收了。
其次:
派生类要对从基类接受的成员进项选择和调整。第一个就是改变基类成员在派生类中的访问属性;第二个就是派生类对基类的成员进行重新定义(派生类的成员会覆盖基类中的同名成员,成员函数呢,则要函数名和参数表和基类一致)。
最后:
在派生类中增加新的成员。增加新成员体现了对基类的功能特性的扩展。
ok,接下来我们看看派生类对基类成员的访问规则:
访问属性有两种:
内部访问(派生类新增成员函数对继承的成员的访问)
对象访问(在派生类外部,派生类的对象对继承的成员访问)
私有继承的访问规则:
声明一个基类A
class A{
public