-
Der Zugriffsmodifikator , der die Zugänglichkeit einer Klasse, eines Objekts oder eines Felds beschreibt, ist erforderlich: Wenn er nicht vorhanden ist , weist die JVM (dies ist eine solche Quelle universeller Magie) dem Paket automatisch eine Standardkennung zu.
Ab dem zweiten Modifikator gibt es Nichtzugriffsmodifikatoren, die nicht zwingend erforderlich sind und auch miteinander in Konflikt stehen können (aber das Wichtigste zuerst).
-
Der Static- Modifikator gibt an, dass die Klasse, das Objekt oder das Feld statisch ist. Aber was bedeutet es? Grundsätzlich werden wir es auf den Feldern versuchen.
Statische Variablen werden Klassenvariablen genannt und gelten für alle Instanzen dieser Klasse eindeutig. Statische Methoden können aufgerufen werden, ohne das Objekt zu erstellen, in dem sie deklariert sind. Statische Klassen werden verwendet, wenn eine Klasse in eine andere verschachtelt wird, und das Prinzip der Interaktion zwischen der inneren und der äußeren Klasse ähnelt Methoden (dies ist ein Thema für eine separate Diskussion). Kann auch als separater Block innerhalb eines Objekts verwendet werden.
-
Der Final- Modifikator zeigt einer Variablen effektiv an, dass es sich um eine Konstante handelt. Für Methoden – dass sie bei der Vererbung nicht überschrieben werden können, für Klassen ist dies jedoch ein Hinweis darauf, dass sie nicht von ihr vererbt werden können (unveränderlich).
Die statischen und finalen Modifikatoren gelten für Klassen, Objekte und Felder. Es gibt jedoch Modifikatoren, die nur für einige von ihnen gelten (oder sogar für einen Teil davon, da sowohl eine Variable als auch eine Methode ein Feld sind, aber nicht alle Modifikatoren für beide gelten). Wenn wir eine Analogie ziehen, können nur Stiefel und Handschuhe auf Geschwindigkeit verzaubert werden (um sie schneller zu bewegen), aber einen Hut auf Geschwindigkeit zu verzaubern ist sinnlos (und der Universal Supervisory Council (Compiler) wird dies nicht zulassen).
-
Der Abstract- Modifikator gilt nur für Methoden und Klassen . Eine abstrakte Methode ist eine Methode ohne Implementierung (Körper).
Wenn eine Klasse als abstrakt markiert ist, enthält sie entweder abstrakte Methoden oder verhindert die Erstellung von Instanzen dieser Klasse. Wenn wir eine Analogie ziehen, sehen Sie in der Mitte der Anleitung die Überschrift „Einen Gegenstand einfärben“, danach gibt es keine Beschreibung. Diese. Mit dieser Anleitung können Sie ein Objekt erstellen und es auch einfärben, aber diese spezielle Anleitung sagt nicht, wie (schreiben Sie Ihre eigenen Anweisungen zum Erstellen eines roten Objekts basierend auf diesem Objekt und beschreiben Sie, wie es eingefärbt wird).
-
Der Modifikator Syncronized wird nur für Methoden verwendet. Sein Vorhandensein zeigt an, dass es jeweils nur von einem Thread ausgeführt werden kann. Kann auch als separater Codeblock innerhalb eines Objekts verwendet werden (Angabe des Synchronisationsobjekts).
-
Volatile- Modifikator – nur für Variablen . Es wird empfohlen, es für Variablen zu verwenden, die von mehreren Threads gleichzeitig verwendet werden können. Eine Variable mit einem solchen Modifikator wird bei jeder Änderung sofort aus dem Prozessor-Cache in den Hauptspeicher kopiert, sodass parallele Threads den neuesten Wert erhalten können.
Es ist erwähnenswert, dass volatile in Fällen anwendbar ist, in denen nur ein Thread in eine Variable schreiben kann und der Rest nur daraus lesen kann. In anderen Fällen ist es besser, den synchronisierten Modifikator zu Methoden hinzuzufügen, die in eine flüchtige Variable schreiben.
-
Transientenmodifikator – nur für Variablen . Dieser Modifikator markiert Variablen, die beim Serialisieren eines Objekts übersprungen werden müssen (dies ist ein so intelligenter Prozess, dass Sie ihn im Prinzip selbst nachlesen können...)*
* - Ich habe diesen Artikel auf Stufe 17 geschrieben und bis dahin war die Serialisierung als Prozess noch nicht beschrieben worden. Daher empfehle ich Ihnen, ihn bei Bedarf selbst zu studieren, anstatt ihn zu kopieren und einzufügen.
- Endgültig und flüchtig – wenn es um Variablen geht, können wir nicht gleichzeitig sagen, dass sie endgültig (konstant) sind und dass mehrere Threads die Fähigkeit haben, sie zu ändern … Schließlich ist sie konstant und kann jederzeit von einem Thread gelesen werden , aber kein einziger Thread kann die Konstante ändern (der Universal Supervisory Council wird dies nicht zulassen).
- Endgültig und abstrakt – Klassen und Methoden können nicht sowohl abstrakt (was in den meisten Fällen die Notwendigkeit einer Klärung für die Implementierung impliziert) als auch endgültig sein, d. h. unveränderlich. Es stellt sich heraus, dass in der Anleitung steht, wie man aus einem beliebigen Material einen guten, haltbaren Helm herstellt (abstrakter Teil), aber dafür dürfen darin keine Löcher sein (der letzte obligatorische Teil, kann nicht geändert werden).
- Abstrakt und statisch – Eine abstrakte Methode kann nicht gleichzeitig statisch oder synchronisiert sein. Eine statische abstrakte Methode macht keinen Sinn, weil sie nicht nur nichts tut, sondern auch zu einer ganzen Klasse gehört – das Ergebnis ist nutzlos.
- Abstrakt und synchronisiert – welchen Sinn hat es, die Arbeit mit einer Methode zu synchronisieren, die nichts bewirkt?
GO TO FULL VERSION