图示
形象记忆
基类相当于父亲,派生类相当于儿子,public公有成员相当于父亲的职业技能,儿子可以继承,外界也可以调用。
protect保护成员相当于父亲的财产,儿子可以继承,外界不可调用。
private私有成员相当于父亲的隐私,儿子不可继承,外界也不可调用。
另注
- 对于外部世界来说,保护成员和私有成员相似。只能通过公有成员函数访问。不能在外部直接赋值修改。
- 对于派生类来说,保护成员和公有成员相似。可以当成公有成员直接访问。
- 对于类数据成员最好采用私有访问控制,不要使用保护访问控制,使用通过基类方法使派生类能够访问基类数据。
- 原因是对于派生类对象,保护成员被当成公有成员一样使用,失去了一开始说的私有保护措施。(但实际上,也仅仅是给派生类提升了权限,对于外部世界,还是严密的被保护的。)