面向对象编程其中肯定少不了类的继承机制,而类的继承又分为三种类型:公有继承(public)、私有继承(private)和保护继承(protected),不同的继承机制使派生类对基类成员有不同的访问权限,而派生类的类成员和对象成员对基类又有不同的访问权限。
在开始介绍派生类的访问机制之前,我们先来了解一下类的成员和对象的成员。
类的成员
静态成员,即类的static类型成员,它可以访问类中的所有成员,可以直接用类.属性(方法)来表示
对象的成员
非静态成员,必须先new一个类的对象,通过对象.属性(方法)或者this->属性(方法)来表示。
好了,了解了类成员和对象成员,接下来说一下派生类对基类的继承访问机制。
在类的继承机制中,其实派生类也继承了基类的私有成员,但没有访问权限,或者也可以等价为根本没有继承基类的私有成员,基类的私有成员只允许基类自身或基类的友元函数调用,其他都没有访问权限,了解了这一点下面对私有成员将不再赘述。
另外,派生类的对象不能访问基类私有的和保护类型的成员,只能访问公有成员。下面都是基于派生类的类成员的访问权限
在公用继承中,基类的公用成员和保护成员在派生类中都保持原有的访问属性
在私有继承中,基类的公用成员和保护成员在派生类中的访问权限都变为私有,即只允许派生类的类成员访问,其他都没有访问权限。
在保护继承中,基类的公用成员和保护成员在派生类中的访问权限都变为保护类型的,只允许派生类的类成员或二级派生类访问。
下图是对以上解释的图示(只针对类的成员成立):
最后通过一个简单的小例子来帮助消化吸收一下
Class A{
Public:
F1()
Private:
F2()
Protected:
F3()
}
Class B:Public A{
Public:
F4()
}
Class C:private B{}
类B的成员可以访问F1,F3,不能访问F2
类B的对象可以访问F1,不能访问F2,F3
类C的成员可以访问F1,F4,F3,不能访问F2
类C的对象可以访问F1,F4,不能访问F2,F3
关于类的继承,在面向对象编程中是必不可少的一部分,以上是我学习后的理解,文中有观点不正确的地方,欢迎指正。