类成员访问控制:
公有类型成员定义了类的外部接口,在类外智能访问类的公有成员;
私有成员只能被本类的成员函数访问,来自外部的任何访问都是非法的,完全隐藏在类中,保护了数据的安全性;
保护类型成员的性质和私有成员性质相似,其差别在于继承过程中对产生的新类的影响不同,意义在于不想向外部暴露某个函数或者成员变量,但又想让派生类知道和访问这个成员,就将其用protected标志。是一个平衡点,既能实现成员隐藏,又能方便继承。
类的继承方式:
(1)公有继承
派生类内部可以访问基类中public和protected成员,但是类外只能通过派生类的对象访问基类的public成员。
a)基类的public成员在派生类中依然是public的。
b)基类中的protected成员在派生类中依然是protected的。
c)基类中的private成员在派生类中不可访问。
(2)私有继承
派生类内部可以访问基类中public和protected成员,并且类外也不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的public和protected成员)
a)基类的public成员在派生类中变成private成员。
b)基类的protected成员在派生类中变成private成员。
c)基类的private成员在派生类中不可访问。
进一步派生的话,基类的全部成员都无法在新的派生类中被直接访问。因此,私有继承之后,基类的成员再也无法在以后的派生类中直接发挥作用,实际上相当于中止了基类功能的继续继承性,出于这种原因,一般情况下私有继承的使用比较少。
(3)保护继承
派生类内部可以访问基类中public和protected成员,并且类外不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的public和protected成员)。
a)基类的public成员在派生类中变为protected成员。
b)基类的protected成员在派生类中依然是protected成员。
c)基类中的private成员在派生类中不可访问。
不管哪种继承方式,父类的私有成员都不可以访问,只有间接的通过公有成员才能获取到私有成员的值