【发布时间】:2011-01-15 08:58:51
【问题描述】:
在 Java 中,访问说明符和访问修饰符是一回事吗?
【问题讨论】:
-
有趣,多年来我从未见过这个特殊问题,但显然你不是唯一一个对此感到疑惑的人:google.com/search?q=difference+access+specifier+access+modifier ;)
标签: java access-modifiers access-specifier
在 Java 中,访问说明符和访问修饰符是一回事吗?
【问题讨论】:
标签: java access-modifiers access-specifier
“访问修饰符”是private、protected 和public 的官方术语,用于Java language specification。 “访问说明符”在Java API doc 中用作同义词,但这是我第一次注意到这一点。坚持使用 JLS 术语可能会更好。
【讨论】:
参考 Sun Java Docs,它们似乎都是一样的:
【讨论】:
Java 基本上有两种修饰符:
Java 访问修饰符和Java 访问说明符是一回事,分别是public、private、protected。
【讨论】:
在一些较旧的语言中,公共、私有、受保护和默认值(如 C++)被视为访问说明符,其他所有内容都被视为访问修饰符,但在 Java 中没有说明符的术语,默认情况下所有内容都被视为修饰符。 所以 public、private、protected、default、final、abstract、static、strictfp、synchronized、native、transient 和 volatile 都只是修饰符。
简单的测试是当我们编译下面的代码时
私教测试{ }
我们会得到编译时错误,说这里不允许使用修饰符 private。其他修饰符也是如此。 也许 java 编译器 (javac) 只将所有内容视为“修饰符”。
【讨论】:
在我看来,是的,这两个术语指的是同一个东西,并且可以互换使用。
【讨论】:
JDI 参考是我在 Java 规范中看到术语“访问说明符”的唯一地方。即使在那里,public/protected/private/package 也被称为“修饰符”。确实没有理由在 Java 中使用术语“访问说明符”,这显然只是成千上万页中的一个错误。
【讨论】:
从技术上讲,private、public、protected 和 default 被视为访问说明符。这些处理谁能... 问题。修饰符 afaik 是 volatile、final、static、transient 等。它们处理 how do .. 方面。
【讨论】: