受保护区域与使用基类中的私有区域

时间:2013-02-05 12:06:38

标签: c# c++ .net

我听说使用受保护的成员并不好,因为它打破了基类的封装。我需要知道在私有成员中使用受保护成员有什么好处,或者在基类中使用反之亦然。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

使用受保护的成员而不是使用私有成员没有明显的优势。它在概念上是不同的。

private:您只能在班级

中使用您的成员

protected:成员可以在类内部和子类内使用,但不能在外部使用

public:可以在班级内外的任何地方调用和查看会员

这意味着:根据您想要表达的内容选择您的概念!如果您必须覆盖成员,请​​将其保护。

绝对不推荐的是让会员受到“以防万一”的保护。如果你想表达一个可以覆盖的钩子,那么只有这样才能使它们受到保护。这必须在您的代码中以其他方式表达,例如使用覆盖成员的地方。

答案 1 :(得分:2)

假设您在基类中有一个不应该在类外部使用的函数,但它可能必须被子类覆盖。然后你可以保护它。

答案 2 :(得分:2)

实际上我们不能谈论私人和受保护之间的利弊。你做什么继承将总是以某种方式破坏封装。您必须根据要求设置访问修饰符。如果派生类希望(或需要)使用或覆盖基类中的方法,则可以使其受到保护,否则它应该是私有的。