web-dev-qa-db-de.com

Was ist der Unterschied zwischen Zugriffsspezifizierern und Zugriffsmodifizierern?

Sind Zugriffsspezifizierer und Zugriffsmodifizierer das Gleiche in Java? 

36
sgokhales

Nein. "Zugriffsmodifizierer" ist die offizielle Bezeichnung für private, protected und public, wohingegen der Begriff "Zugriffsbezeichner" in der Java-Sprachspezifikation überhaupt nicht vorkommt und AFAIK nicht weit verbreitet ist.

"Zugriffsmodifizierer" ist die offizielle Bezeichnung für private, protected und public, die in der Java-Sprachspezifikation verwendet werden. "access spezifier" wird in Java API doc synonym verwendet, aber das ist das erste Mal, dass mir das aufgefallen ist. Es ist wahrscheinlich besser, beim JLS-Begriff zu bleiben.

40

In Bezug auf die Sun Java Docs scheinen beide identisch zu sein:

5
codaddict

Der Begriff Access-Bezeichner, der von C++ - Programmierern verwendet wird, die nicht in Java sind. In Java verwenden wir offiziell Access Modifier.

Zum Beispiel: Wenn wir eine Klasse mit private deklarieren, zeigt der Compiler die Fehlermeldung eindeutig wie folgt an:
 enter image description here

3
Premraj

Java hat grundsätzlich zwei Arten von Modifikatoren:

  1. Java-Zugriffsmodifizierer
  2. Java-Modifikatoren ohne Zugriff

Java-Zugriffsmodifizierer und Java-Zugriffsspezifizierer sind dasselbe, nämlich public, private, protected.

1
Tamana

Ja, beide Begriffe beziehen sich auf dasselbe und werden synonym verwendet.

0
missingfaktor

In einigen älteren Sprachen werden "public", "private", "protected" und "default" wie "C++" als Zugriffsspezifizierer betrachtet. Alles andere wird als Zugriffsmodifizierer betrachtet. In Java gibt es keine Terminologie für den Spezifizierer. Standardmäßig wird alles nur als Modifikator angesehen , private, protected, default, final, abstract, static, strictfp, synchronized, native, transient und volatile sind nur Modifikatoren.

Ein einfacher Test dafür ist, wenn wir den folgenden Code kompilieren

private Klasse Test {}

es wird ein Fehler beim Kompilieren angezeigt, der besagt, dass der Modifizierer private hier nicht zulässig ist. Dies gilt auch für andere Modifikatoren. Vielleicht sieht Java-Compiler (Javac) alles nur als "Modifikator".

0
raghavanm

Diese JDI-Referenz ist der einzige Ort, an dem ich jemals den Begriff "Zugriffsspezifizierer" in einer Java-Spezifikation gesehen habe. Public/protected/private/package werden auch dort als "Modifikatoren" bezeichnet. Es gibt wirklich keinen Grund, jemals den Begriff "Zugriffsspezifizierer" in Java zu verwenden, es ist eindeutig nur ein Fehler auf einer Seite von vielen Tausenden.

0
user207421