我听说使用受保护的成员并不好,因为它打破了基类的封装。我需要知道在私有成员中使用受保护成员有什么好处,或者在基类中使用反之亦然。有人可以帮忙吗?
答案 0 :(得分:4)
使用受保护的成员而不是使用私有成员没有明显的优势。它在概念上是不同的。
private:您只能在班级
中使用您的成员protected:成员可以在类内部和子类内使用,但不能在外部使用
public:可以在班级内外的任何地方调用和查看会员
这意味着:根据您想要表达的内容选择您的概念!如果您必须覆盖成员,请将其保护。
绝对不推荐的是让会员受到“以防万一”的保护。如果你想表达一个可以覆盖的钩子,那么只有这样才能使它们受到保护。这必须在您的代码中以其他方式表达,例如使用覆盖成员的地方。
答案 1 :(得分:2)
假设您在基类中有一个不应该在类外部使用的函数,但它可能必须被子类覆盖。然后你可以保护它。
答案 2 :(得分:2)
实际上我们不能谈论私人和受保护之间的利弊。你做什么继承将总是以某种方式破坏封装。您必须根据要求设置访问修饰符。如果派生类希望(或需要)使用或覆盖基类中的方法,则可以使其受到保护,否则它应该是私有的。