在上一节中,我们看到了派生类的定义方法,用到了public的公有继承,实际这里一共有三种方式,分别是公有继承、私有继承、保护继承。
不同的继承方式,主要区别在于基类中不同访问权限的成员在派生类中的访问权限变化情况。下面一一介绍。
先来说说公有继承,公有继承的模式下,特点如下:
1. 基类中的公有成员,在派生类中仍然为公有成员。当然无论派生里的成员函数还是派生类对象都可以访问。
2. 基类中的私有成员,无论在派生类的成员还是派生类对象都不可以访问。
3. 基类中的保护成员,在派生类中仍然是保护类型,可以通过派生类的成员函数访问,但派生类对象不可以访问!
第二种,私有继承。
在私有继承的情况下,公有类型、私有类型、受保护类型三种成员的访问权限如下:
1. 基类的公有和受保护类型,被派生类私有继承吸收后,都变为派生类的私有类型,即在类的成员函数里可以访问,不能在类外访问。
2. 而基类的私有成员,在派生类无论类内还是类外都不可以访问。
可以看出来,如果为私有派生,则基类的私有成员在派生类甚至再派生出的子类中,都无法再使用。没有什么存在意义,故这种使用情况比较少。
第三种,保护继承
保护类型的继承,特点如下:
1. 基类的公有成员和保护类型成员在派生类中为保护成员。
2. 基类的私有成员在派生类中不能被直接访问。
可以看的出来,派生类里的成员函数可以访问基类的公有成员和保护成员,但在类外通过派生类对象则无法访问它们