问题标签 [access-modifiers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
19 回答
86579 浏览

c# - 有什么理由在 C# 中使用私有属性吗?

我刚刚意识到 C#属性构造也可以与私有访问修饰符一起使用:

虽然这在技术上很有趣,但我无法想象我什么时候会使用它,因为私有领域涉及的仪式更少

而且我无法想象何时需要能够在内部获取但不设置设置但不获取私有字段:

或者

但也许有一个嵌套/继承类的用例,或者可能一个 get/set 可能包含逻辑而不是仅仅返回属性的值,尽管我倾向于保持属性严格简单并让显式方法执行任何逻辑,例如GetEncodedPassword()

是否有人出于任何原因在 C# 中使用私有属性,或者它只是那些技术上可能但很少在实际代码中使用的构造之一?

附录

很好的答案,通读它们,我挑选了私有财产的这些用途:

  • 当私有字段需要延迟加载时
  • 当私有字段需要额外的逻辑或者是计算值时
  • 因为私有字段可能难以调试
  • 为了“向自己提出合同”
  • 作为序列化的一部分,在内部转换/简化公开的属性
  • 包装要在类中使用的全局变量
0 投票
3 回答
1130 浏览

c++ - 公共、受保护、私有

看看这段代码:

B 可以访问 this->protectedfield,但不能访问 a.protectedfield。为什么?然而 B 是 A 的子类。

0 投票
7 回答
31689 浏览

java - multiple classes in a single file : modifier private not allowed here

I am not able to understand why this code doesn't compile:

I am saving the contents in a file named A.java - and I get an error:

This happens both when I try B as private and protected. Can someone please explain me the reason behind this?

Thanks !

0 投票
4 回答
1708 浏览

c# - 为什么sealed关键字不包含在访问修饰符列表中?

我认为sealed应该包含在 C# 语言的访问修饰符列表中。有人能说出它被排除在外的原因吗?

0 投票
3 回答
805 浏览

c# - 类只能由“父”类写入,但可由其他类读取

我正在使用 C#,我没有很多经验(到目前为止,我主要使用 java/php/javascript)

我想要的是一个类,我在其中保存了一些数据,这些数据只能由另一个类写入,但仍然可以由程序中的其他类读取。

像这样的东西:

0 投票
3 回答
2397 浏览

c++ - 为什么我可以通过指向派生对象的基类指针访问派生私有成员函数?

输出是bye

我对如何实现没有问题。我了解您使用 vtables,并且 derived 的 vtable 包含新的 add() 函数的地址。但是 add() 是私有的,当我尝试在类外访问它时,编译器不应该产生错误吗?不知何故,它似​​乎不正确。

0 投票
9 回答
173468 浏览

c# - 类由于其保护级别而无法访问

我有三个班。都是同一个命名空间的一部分。这是三个类的基础知识。

我收到以下错误

'StubGenerator.PropGenerator.Method' 由于其保护级别而无法访问

它指的是 FBlock.cs 文件中的以下行

'StubGenerator.PropGenerator.Method' 由于其保护级别而无法访问

它指的是 FBlock.cs 文件中的以下行

可访问性不一致:返回类型“StubGenerator.PropGenerator.Method”比方法“StubGenerator.PropGenerator.FBlock.AddMethod(string)”更难访问

它指的是 FBlock.cs 文件中的以下行

使类 Method 公开并不能解决错误。我无法弄清楚为什么在调用 Property 类时我没有收到错误。而且我不明白为什么公开 Method 类并不能解决问题。

有任何想法吗?

编辑问。文件上可能有一些设置会导致这种情况吗?

0 投票
8 回答
7930 浏览

c# - C# 中的默认访问修饰符

如果我将创建一个如下所示的新对象,默认情况下它将具有哪个访问修饰符?

0 投票
6 回答
336 浏览

access-modifiers - 访问修饰符...为什么?

好的,所以我只是在想,为什么程序员在谈到OOP中的访问修饰符时会如此紧张。

让我们以这段代码为例/ PHP!

因为 web_address 是私有的,它不能被改变$object->web_address = 'w.e.',但是这个变量只会改变的事实是如果你的程序确实$object->web_address = 'w.e.';

如果在我的应用程序中我希望一个变量不被更改,那么我会制作我的应用程序,以便我的编程没有更改它的代码,因此它永远不会被更改?

所以我的问题是:使用私有/受保护/非公共实体的主要规则和原因是什么

0 投票
5 回答
643 浏览

oop - OOP,受保护与公开。什么时候使用?

我试图了解将类变量设为私有而不是公开的好处。我了解获取/设置者可以访问/修改私有/受保护数据,但其唯一目的是“防止我破坏我的数据”吗?示例:我不明白怎么说

具有不同的破坏潜力