继承
在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(base class)”或“父类(father class)”,新建的类称为“派生类(derived class)”或“子类(son class)”。一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一个角度说,从已有的类(父类)产生一个新的子类,称为类的派生。
基类 :C语言中的基本数据类型,是C语言自己定义好的数据类型,用户直接拿就可以使用的,它包括:整形int,字符型char,浮点型float(双精度 double,布尔型bool,空类型null)
派生类 :也就是说,一个派生类可以有一个或者多个基类。一个派生类有两个或多个基类的称为多重继承(multiple inheritance)。关于基类和派生类的关系,可以表述为派生类是基类的具体化,而基类则是派生类的抽象
派生类的声明方式
从一个基类派生一个列的一般格式为:
class ClassName:Access BaseClassName
{Access包括三种继承方式:private,public,protected,BaseClassName为父类的名字
private:
......;//私有成员说明
public:
......//公有成员说明
protected:
......//保护成员说明
};
Access表示继承方式;
public:表示公有继承,在派生类和类别外可以使用(可以被任意实体访问);
privte:表示私有继承,在派生类中使用(只允许子类及本类的成员函数访问);
protected:表示保护继承,只能由类内部使用(只允许本类的成员函数访问)。
基类中继承方式:
public & public继承=>public
public & protected继承=>public
public & private继承=>private
protected & public继承=>protected
protected & protected继承=>protected
protected & private继承=>private
private & public继承=>子类无权访问
private & protected继承=>子类无权访问
private & private继承=>子类无权访问
由以上组合结果可以看出:
public继承不改变基类成员的访问权限
private继承是的基类所有成员在子类的访问权限变为private
protected继承将基类中public成员变为子类的protected成员,其他成员的访问权限不变
基类中的private成员不受继承方式的影响,子类永远无权访问
此外,在使用private继承时,还存在另外一种机制:准许访问
在基类以private方式被继承时,其public和protected成员在子类中变为privbate成员,然而某些情况下没需要在子类中将一个或多个继承的成员回复其在基类中的访问权限
C++支持以两种方式实现该目的:
方法一:使用using语句没这事C++标准使用的方式
方法二:使用访问声明,形式为base-class::member,位置在子类中适应的访问声明处。(只能护肤原有访问权限,而不能提高或降低访问权限)
派生类说明(实际使用中public继承最为常用,其他两种不常用,知道还有这两种就好)
public派生:基类中所有成员在派生类中保持各个成员的访问权限,公有的和受保护的成员依旧保持他们的访问权限,而基类的私有成员子类是无法访问的。
private派生:基类中公有成员保护成员在派生类中均变为私有的,在派生类中仍可直接使用哲学成员,基类中的私有成员,在派生类中不可直接使用。
protected派生:protected对派生类的对象而言,是公开成员,可以访问,保护派生时,基类中公有成员和保护成员在派生类中均变为保护的和私有的,在派生中仍可直接使用这些成员,基类中的私有成员,在派生类中不可直接使用。
派生类的构成:
派生类的成员包括从基类继承的成员和自己增加的新的成员两部分、
从基类获得的成员体现了派生类从基类继承而获得的共性,新增加的成员体现了派生类的个性,不同派生类之间的区别就是这些由新添加的成员导致
派生类的构造函数和析构函数
构造函数不能被继承,派生类的构造函数必须调用基类的构造基数来初始化基类成员
派生类构造函数的调用顺序如下:
基类的构造函数(若没有显示定义构造函数则使用编译器自动生成的默认构造函数,默认构造函数内部会调用基类或数据成员为类类型的成员的构造函数)

浙公网安备 33010602011771号