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.
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.
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.
[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