繁体   English   中英

受保护的数据成员

[英]protected data members

为什么应将“数据成员”声明为“受保护”?可能有什么好处?

子类可以访问受保护的成员,如果您将它们声明为私有,则情况并非如此。

您声明事物是私有的或受保护以隐藏它们,以便仅公开本应由外部世界使用的相关事物。

如果您想知道为什么要向外界隐藏成员,则应该获得一本有关面向对象的程序设计的书,因为这些是基本概念。

MSDN

类型或成员只能由相同类或结构中的代码或从该类派生的类中的代码访问。

可能的好处:您限制访问班级及其直接子级的权限

protected只是意味着子类能够看到该成员,但是该成员不是该对象的公共API的一部分。

再问一个问题; 这取决于您所说的“数据成员”的含义。 如果您是指字段,那么IMO就不应该 如果子类需要该信息(特别是方法),则使某些状态(属性) protected是很常见的,但对于外界而言则不必要。

但是,一个更好的例子是protected virtual ,继承者可以更改其他(对外界)私有成员的实现。 典型的例子是:

protected virtual OnSomeMemberChanging(...) {}
protected virtual OnSomeMemberChanged(...) {}

现在,继承者现在可以通过使用override来更改实现(通常但并非总是在某些时候调用base.Whatever()来调用原始实现base.Whatever() ,从而对更改或更改键值进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM