Access Qualifier Summary-JVM-Sprachausgabe (Java / Groovy / Scala / Kotlin)

Einführung

Neulich habe ich es in einer Smartphone-App mit dem Titel "Zusammenfassung der Zugriffsqualifizierer - Entwicklung von Smartphone-Anwendungen (Java / Kotlin / Ziel-C / Swift / C # / F #) verwendet." Ich habe den Vergleich der Zugriffsqualifizierer von Sprachen zusammengefasst, aber dieses Mal möchte ich die Zugriffsqualifizierer mit dem Thema "JVM-Sprache" zusammenfassen.

Was ist die JVM-Sprache?

Es ist eine Sprache, die auf JVM (Java Virtual Machine) ausgeführt wird, und es gibt neben Java viele alternative Java-Sprachen. Dieses Mal werden wir die wichtigsten Groovy, Scala und Kotlin unter ihnen aufgreifen und sie zusammen mit Java in einer Vergleichstabelle zusammenfassen.

Vergleichstabelle

Zugriffsmodifikator Java Groovy Scala Kotlin
public Von überall zugänglich Von überall zugänglich Von überall zugänglich Von überall zugänglich
protected Zugriff über Klasse + abgeleitete Klasse im selben Paket Von überall zugänglich Zugriff über dieselbe Klasse + abgeleitete Klasse 継承したZugriff über Klasse + abgeleitete Klasse im selben Paket
internal (nicht existieren) (nicht existieren) (nicht existieren) Zugriff innerhalb desselben Moduls
private Zugänglich im selben Bereich
* Sie können auch auf die private Variable der inneren Klasse verweisen.
Von überall zugänglich
* Allerdings super aus der abgeleiteten Klasse.*Kann nicht mit zugegriffen werden
Zugänglich im selben Bereich Zugänglich im selben Bereich
protected[Paketnamen] (nicht existieren) (nicht existieren) Kann von der Klasse im angegebenen Paket + abgeleitete Klasse zugegriffen werden
* Geben Sie nur das Paket an, zu dem es gehört (Zwischenhierarchie ist ebenfalls möglich)
(nicht existieren)
private[Paketnamen] (nicht existieren) (nicht existieren) Zugriff innerhalb des angegebenen Pakets
* Geben Sie nur das Paket an, zu dem es gehört (Zwischenhierarchie ist ebenfalls möglich)
(nicht existieren)
protected[Name der Klasse] (nicht existieren) (nicht existieren) Zugriff von Ihnen selbst oder der angegebenen Klasse + abgeleiteten Klasse
* Es können nur Klassen außerhalb von Ihnen angegeben werden
(nicht existieren)
private[Name der Klasse] (nicht existieren) (nicht existieren) Zugriff von sich selbst oder einer bestimmten Klasse
* Es können nur Klassen außerhalb von Ihnen angegeben werden
(nicht existieren)
protected[this] (nicht existieren) (nicht existieren) Zugriff über eigene Instanz + abgeleitete Klasse (nicht existieren)
private[this] (nicht existieren) (nicht existieren) Nur von Ihrer eigenen Instanz aus zugänglich (nicht existieren)
Unbestimmt Zugriff innerhalb desselben Pakets Gleich wie öffentlich Gleich wie öffentlich Gleich wie öffentlich

Groovy ist mit Java kompatibel, daher können Sie Zugriffsmodifikatoren verwenden, die Java ähneln, aber sie funktionieren nicht gut und Sie können von überall auf alles zugreifen (standardmäßig öffentlich). .. Dieses Verhalten wird als Fehler behandelt, aber es scheint noch weit davon entfernt zu sein, behoben zu werden (überprüft durch Groovy 2.4.12 beim Schreiben dieses Artikels). Scala verfügt über ein Qualifikationsmerkmal, das sich durch eine differenzierte Zugangskontrolle auszeichnet.

Andere alternative Sprachen als Java sind insofern üblich, als sie "öffentlich" werden, wenn nichts angegeben wird. "Schreiben Sie keine Schlüsselwörter für die Zugriffskontrolle" ⇒ "Keine Zugangskontrolle" ⇒ "Von überall zugänglich" Ich denke, es ist intuitiv und leicht zu verstehen.

Referenz

[GROOVY-3010] fix private field visibility - ASF JIRA [GROOVY-7246] Access modifiers behave differently in Groovy when compared to Java. - ASF JIRA Scala-Klassenmemo (Hishidamas Scala-Klassenmemo) Zugriffsmodifikatoren für Klassenmitglieder | Hydrocul-Hinweise Zum ersten Mal Kotlin. Ich habe es mit Java verglichen

Recommended Posts

Access Qualifier Summary-JVM-Sprachausgabe (Java / Groovy / Scala / Kotlin)
Zugriffsmodifikator [Java]
Mehrstufige Auswahl (Java / Groovy / Scala)
Zusammenfassung der Zugriffsqualifizierer - Entwicklung von Smartphone-Anwendungen (Java / Kotlin / Objective-C / Swift / C # / F #)
[Java Silver] Zusammenfassung der Zugriffsmodifikatorpunkte
Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren