0

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

4

3 回答 3

3

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

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

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

public:可以在课堂内外的任何地方调用和查看成员

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

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

于 2013-02-05T12:12:29.353 回答
2

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

于 2013-02-05T12:08:39.120 回答
1

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

于 2013-02-05T12:10:16.937 回答