保护区与在基类中使用私人区域

本文关键字:区域 基类 保护区 | 更新日期: 2023-09-27 17:57:49

我听说使用受保护的成员是不好的,因为它破坏了基类的封装。我需要知道在基类中使用受保护成员相对于私人成员或反之亦然的优势是什么。有人能帮忙吗?

保护区与在基类中使用私人区域

与使用私有成员相比,使用受保护成员没有明显的优势。在任何方面,它在概念上都是不同的。

private:您只能在类内使用您的会员

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

公众:会员可以在内外的任何地方被呼叫和看到

这意味着:根据你想表达的内容来选择你的概念!如果必须覆盖成员,请使其受到保护。

明确不建议的是让成员在"以防万一"的情况下受到保护。如果你想表达有一个钩子可以被覆盖,那么,也只有在那时,让它们受到保护。这必须在其他地方的代码中表达,例如使用overriden成员的地方。

假设基类中有一个函数不应该从类外使用,但它可能必须由子类重写。然后你就可以保护它了。

实际上,我们不能谈论私有和受保护之间的优势或劣势。无论你做什么,继承总是会以某种方式打破封装。必须根据要求设置访问修饰符。如果派生类希望(或需要)使用或重写基类中的方法,则可以对其进行保护,否则它应该是私有的。