前面我们已经介绍了private和public,以及他们在派生类中的应用,这里结合书上的内容介绍protected。
protected
protected称为保护限制,他和private和public既有联系又有区别。
1.首先我们回顾下public,如果一个成员时是public,那么他既可以在类内直接访问也可以在类外通过对象直接访问。
2.而private修饰的数据成员只能在类内直接访问,而不能在类外通过对象直接访问,需要通过共有的函数成员(接口),并且private修饰的数据成员在派生类中也不能直接访问,因为虽然他继承到了子类中,但毕竟不是子类的,所以在子类中访问被继承的private数据成员需要通过被继承的父类的共有函数。
3.而protected修饰的成员,不管是数据成员还是函数成员,在外部和private修饰的一样,也就是不能通过对象直接访问,但可以通过类的公有函数。但是在内部和public修饰的一样,也就是在继承类中可以直接访问,不用再去用父类的共有方法,即在继承这一方面protected=public
4.总结:对于外部世界(类外),protected=private,对于内部世界(类内+继承),protected=public
注意:根据书中所说,数据成员最好使用private修饰,而不要使用protected,protected多用于修饰特定的成员函数,他让派生类能够访问公众不能使用的内部函数