Javaでは、アクセス指定子とアクセス修飾子は同じものですか?
「アクセス修飾子」は、 Java言語仕様 で使用されるprivate
、protected
およびpublic
の公式用語です。 「アクセス指定子」は Java API doc で同義的に使用されますが、これに気づいたのはこれが初めてです。 JLSの用語に固執する方がおそらく良いでしょう。
Sun Java Docsを参照すると、両者は同じように見えます:
Javaには、基本的に2種類の修飾子があります。
Javaアクセス修飾子とJavaアクセス指定子は同じもので、public
、private
、protected
です。
私によると、はい、両方の用語は同じものを指し、交換可能に使用されます。
一部の古い言語では、C++などのpublic、private、protected、およびdefaultはアクセス指定子と見なされ、他のすべてはアクセス修飾子と見なされますが、Javaには指定子の用語はありません。したがって、パブリック、プライベート、保護、デフォルト、最終、抽象、静的、strictfp、同期、ネイティブ、一時、および揮発性はすべて修飾子のみです。
簡単なテストは、次のコードをコンパイルするときです
プライベートクラスTest {}
ここでは修飾子privateは許可されないというコンパイル時エラーが発生します。これは、他の修飾子にも当てはまります。たぶんJavaコンパイラ(javac)はすべてを「修飾子」と見なします。
そのJDI参照は、Java仕様で使用される用語 'アクセス指定子'を見たことがある唯一の場所です。そこでも、public/protected/private/packageは '修飾子'と呼ばれます。 Javaで「アクセス指定子」という用語を使用する理由はまったくありません。これは明らかに、何千ものページのうちの1ページでの間違いにすぎません。