protected成员可由派生类访问。 private成员则不然。
一般来说(大多数时候)成员应该是private或public。protected在设计良好的系统中需要成员(编辑)的情况很少见且不寻常。
也许我应该详细解释一下为什么protected成员会成为一种代码味道。
如果派生类可以访问其他类不能访问的数据成员,则这可能表明基类和派生类耦合过于紧密。派生类可以访问基类的状态,因此基类的状态容易受到损坏。如果情况并非如此,那么通常也没有理由只创建数据成员public。
其他人对此进行了更详细的讨论。
以下是斯特鲁斯特鲁普在他的文字中所说的话:
被宣布为受保护的成员比被宣布为私有的成员更容易受到滥用。特别是,声明数据成员受保护通常是一个设计错误。将大量数据放在一个公共类中供所有派生类使用会使数据容易损坏。更糟糕的是,受保护的数据(如公共数据)无法轻易重组,因为没有找到每种用途的好方法。因此,受保护的数据成为软件维护问题。
另请参阅这个问题。