访问修饰符和访问限定符的区别

6

我在网上看到许多人说:

访问修饰符 ::

访问修饰符决定了其他类中的代码能够访问该字段的可访问性。访问范围从完全可访问到完全不可访问。您可以使用public、private或protected关键字选择性地声明字段的访问修饰符。

访问修饰符 ::

您可以使用修饰符关键字:final或volatile和/或static和/或transient、abstract等,选择性地声明字段。

它们有任何区别吗?因为大多数对访问修饰符和访问修饰符的定义都是相同的...这似乎非常模糊。


公共类和公共静态类,这让你想到了什么吗? - V4Vendetta
我认为C#中没有“transient”关键字。它在J#中用于标记不可序列化的字段。 - kubal5003
5个回答

7
在这个上下文中,您可以将访问修饰符视为保护修饰符 - 它们指定变量可以从哪里访问。相比之下,访问修改器完全不同;它们指定应该(或不应该)如何访问变量;例如只读,易失性等。
也就是说,变量可以是公共的但是只读的,或者可以是私有的但可写的 - 访问修饰符与修改器无关。
然而,我对C#的术语有些惊讶,因为微软实际上将publicprivate称为“访问修饰符”,并且将volatilereadonly称为普通的“修改器”。

这也是我所认为的。(在我的问题中,我基本上陈述了同样的事情)。如果您能引用您的来源,那将更有帮助。 - Robin Maben
1
访问修饰符、修饰符和访问指示符这些术语太令人困惑了。感谢提供的资源,确实很有帮助。 - Tejaswi Pandava

2
据我所见,这两个术语完全没有区别。例如,MS C++文档将两个术语用于同一事物。

没错!即使是 MSDN 也将这些术语视为可以互换使用的。 - Robin Maben

2
根据MSDN C# 4.0文档,我认为您误解了某些内容。C#没有像“访问说明符”这样的词,而是称之为修饰符访问修饰符,用于控制访问级别。
希望这可以帮到您。
更新:
我认为,这个问题就像您问我包和命名空间之间的区别一样。这取决于您使用或信任的语言或教授。像这个问题一样,没有什么是错的。
从经验(和单词的意思)来看,访问修饰符应该是指控制访问级别的内容,例如public或private。另一方面,访问说明符应该是访问修饰符的超类,它包括其他关键字,如static、final、readonly或类似的内容。
PS。无论是C#、VB.NET还是Java,它们都使用访问修饰符来表示public或private等关键字。而C++则使用访问说明符来表示相同的关键字。 修饰符(C#4.0)

Visual Basic (VB.NET 2010)中的访问级别

控制类成员访问权限(Java)

C++ 2010中的访问修饰符


实际上,我也发现了这个问题。我会点赞的。但是我指的是术语的普遍意义,而不是特定于C#。(尽管有C#标签。对此我很抱歉。) - Robin Maben
请看我的更新。这应该是一个足够好的答案,可以总结你那个无法回答的问题。:D - user94893

1

我相信访问修饰符决定了特定字段/方法的可见性。

访问修饰符告诉您更多关于该字段的行为和使用方式。您可以指定该字段是否需要实例化对象或者是否可以被重写。


0

类的访问控制符表示其他类变量可以在当前类中访问什么。 类的访问修饰符表示访问控制符的相同功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接