继承,顾名思义,按照法律或遵照遗嘱接受死者的财产、职务、头衔、地位等。也可以从生活的角度来理解,有一个孩子,他肯定会遗传父亲或者母亲的一些特征,也就相当于继承了他们的一些特点,再结合自己本身的特点,形成一个完整的个体。
而C++四个特性抽象、封装、继承、多态中的继承是什么呢?作用又是什么呢?我们一起来了解一下。
1.继承的概念与作用
继承是面向对象程序设计使代码可以复用的最重要手段,它允许程序员在保持原有类特性的基础上进行扩展,并增加功能。这样产生的新类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认识过程。
继承关系具有双重作用:
(1)作为类的构造机制,继承通过扩充、组合现有的类来构造新的类。扩充是指形成现有类的特例—派生类;组合是指抽取出若干现有类的共性形成新的抽象层次—基类。
(2)作为类型的构造机制。如果类B继承类A,则所有要求对象A类型的地方也可以接受B类型的对象。
通过继承可以对类分层,C++通过类的派生的机制来支持继承。被继承的类称为基类,父类,或超类,新的类称为派生类或子类。
2.派生类的概念
从一个基类派生的继承称为单继承,从多个基类派生的继承称为多继承。
派生类的定义格式:
(1)单继承
eg:
class A
{
//类的成员
};
class B :public A
{
//类B新添加的成员
};
“派生类名”是新定义的一个类的名字,他是从“基类名”中派生的,并且按指定的“继承方式”派生。
继承方式有三种(public,private,protected),我们会在下面详细介绍。
(2)多继承
eg:
class A
{
//类的成员
};
class B
{
//类的成员
};
class C :public A,private B
{
//类B新添加的成员
};
3.继承方式
基类的成员可以有public、protected、private三种访问权限,基类的自身成员可以对基类中任何一个其他成员进行访问,但是通过基类的对象就只能访问该类的共有成员。
类的继承方式有public、protected、private三种。不同的继承方式会导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。
如下表所示:
注意:私有继承后,所有基类的成员都成为派生类的私有成员,如果进一步派生的话,基类的成员就无法在新的派生类中被访问。因此,私有继承相当于中止了基类功能的继续派生。比较私有继承和保护继承,在直接派生类中,所有成员的访问属性都是完全相同的。但是,继续派生时,两者就有了差别。