1. Zugriffsmodifikatoren
Vor jeder Methode können Programmierer sogenannte Zugriffsmodifikatoren angeben. Dazu gehören die folgenden Schlüsselwörter: public
, protected
, private
.
Mit diesen Zugriffsmodifikatoren können Sie den Zugriff anderer Klassen auf eine Methode einschränken.
Wenn Sie beispielsweise das private
Schlüsselwort vor einer Methodendeklaration schreiben, kann die Methode nur von derselben Klasse aufgerufen werden, in der sie deklariert ist. Das public
Schlüsselwort ermöglicht den Zugriff auf die markierte Methode von jeder Methode einer beliebigen Klasse aus.
Es gibt insgesamt 3 solcher Modifikatoren, aber es gibt 4 Arten des Zugriffs auf eine Methode. Dies liegt daran, dass auch das Fehlen eines Zugriffsmodifikators eine Bedeutung hat.
Zugang von... | ||||
---|---|---|---|---|
Modifikatoren | Jede Klasse | Kinderklasse | Sein Paket | Seine Klasse |
public |
Ja | Ja | Ja | Ja |
protected |
NEIN | Ja | Ja | Ja |
kein Modifikator | NEIN | NEIN | Ja | Ja |
private |
NEIN | NEIN | NEIN | Ja |
1. public
Modifikator
Auf eine mit dem Modifikator markierte Methode (oder Variable oder Klasse) public
kann von überall im Programm aus zugegriffen werden . Dies ist das höchste Maß an Offenheit – es gibt keine Einschränkungen.
2. private
Modifikator
Auf eine mit dem Modifikator markierte Methode (oder Variable oder Klasse) private
kann nur von derselben Klasse aus zugegriffen werden, in der sie deklariert ist . Für alle anderen Klassen ist die markierte Methode (oder Variable) unsichtbar. Es ist, als ob es nicht existiert. Dies ist die höchste Einschränkungsstufe – nur eine eigene Klasse.
3. Kein Modifikator (Standardmodifikator)
Wenn eine Methode (oder Variable) nicht mit einem Modifikator markiert ist, wird davon ausgegangen, dass sie den „Standardmodifikator“ hat. Variablen oder Methoden mit diesem Modifikator (also ohne überhaupt) sind für alle Klassen in dem Paket sichtbar, in dem sie deklariert sind . Und nur für sie. Dieser Modifikator wird manchmal auch genannt package-private
, was darauf hindeutet, dass der Zugriff auf Variablen und Methoden für das gesamte Paket offen ist, in dem sich ihre Klasse befindet.
4. protected
Modifikator
Wenn eine Methode mit dem protected
Modifikator markiert ist, kann von derselben Klasse, demselben Paket und von Nachkommen (Klassen, die die Klasse erben, in der die Methode deklariert ist) auf sie zugegriffen werden. Wir werden dieses Thema in der Java Core-Quest genauer analysieren.
Sie können den public
Modifikator für alle Ihre Methoden (sowie alle Ihre Klassen und Klassenvariablen) verwenden, bis Sie das Ende der Java-Syntax-Quest erreicht haben. Sie benötigen die anderen Modifikatoren, wenn wir beginnen, OOP aktiv zu lernen.
Warum werden Zugriffsmodifikatoren benötigt?
Sie werden für große Projekte notwendig, die von Dutzenden oder Hunderten von Programmierern gleichzeitig geschrieben werden.
Manchmal gibt es Situationen, in denen ein Programmierer eine übermäßig große Methode in Teile aufteilen und einen Teil des Codes in Hilfsmethoden verschieben möchte. Gleichzeitig möchte er jedoch nicht, dass andere Programmierer diese Hilfsmethoden aufrufen, da der entsprechende Code möglicherweise nicht korrekt funktioniert.
Also haben sie sich diese Zugriffsmodifikatoren ausgedacht. Wenn Sie eine Hilfsmethode mit dem Wort private markieren , kann kein anderer Code als Ihre Klasse Ihre Hilfsmethode sehen.
2. static
Schlüsselwort
Das static
Schlüsselwort macht eine Methode statisch. Was das bedeutet, schauen wir uns später an. Erinnern Sie sich vorerst nur an ein paar Fakten über statische Methoden.
Fakt 1: Eine statische Methode ist keinem Objekt zugeordnet , sondern gehört zu der Klasse, in der sie deklariert ist. Um eine statische Methode aufzurufen, müssen Sie Folgendes schreiben:
ClassName.MethodName()
Beispiele für statische Methoden:
Klassenname | Statischer Methodenname | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
Der Klassenname vor dem Namen einer statischen Methode kann weggelassen werden, wenn Sie die statische Methode aus ihrer Klasse heraus aufrufen. Aus diesem Grund müssen Sie nicht Solution
vor den Namen jeder aufgerufenen statischen Methode schreiben.
Fakt 2: Eine statische Methode kann nicht auf die nicht statischen Methoden ihrer eigenen Klasse zugreifen. Eine statische Methode kann nur auf statische Methoden zugreifen. Als Ergebnis deklarieren wir alle Methoden, die wir über die Methode static aufrufen möchten main
.
Warum? Sie werden diese Frage selbst beantworten können, wenn Sie mit dem Erlernen von OOP beginnen und verstehen, wie statische Methoden funktionieren.
3. throws
Schlüsselwort
Es gibt ein weiteres Schlüsselwort, das Sie wahrscheinlich in einer Methodendeklaration gesehen haben – das throws
Schlüsselwort. Im Gegensatz zu Zugriffsmodifikatoren und dem static
Schlüsselwort wird dieses Schlüsselwort nach den Methodenparametern platziert:
public static Type name(parameters) throws Exception
{
method body
}
Wir werden die genaue Bedeutung etwas später betrachten, wenn wir Ausnahmen untersuchen.
Aber um es oberflächlich zu betrachten, können wir sagen, dass eine mit dem Schlüsselwort throws markierte Methode Fehler (Ausnahmen) auslösen kann, also Instanzen der Exception
Klasse (und Klassen, die sie erben). Wenn in einer Klasse mehrere verschiedene Arten von Fehlern auftreten können, müssen Sie diese jeweils durch Kommas getrennt auflisten.
4. main
Methode
Die Zeile, in der eine Methode deklariert wird und alle Modifikatoren enthält, wirkt sich darauf aus, wie diese Methode von anderen Klassen und Methoden aufgerufen wird. Es wirkt sich auf die Art des Ergebnisses aus, das die Methode zurückgibt, und gibt an, welche Fehler während der Ausführung möglich sind.
Eine solche Zeile wird als Methodendeklaration bezeichnet und hat das folgende allgemeine Format:
access modifier static Type name(parameters) throws exceptions
Wo wird durch , , oder gar nichts access modifiers
ersetzt ;public
protected
private
Wenn die Methode statisch ist, static
erscheint das Schlüsselwort (bei nicht statischen Methoden fehlt es).
Type
ist der Typ des Rückgabewerts ( void
wenn es kein Ergebnis gibt)
Jetzt verstehen Sie wahrscheinlich, was alle Schlüsselwörter in der Deklaration der main
Methode bedeuten:
public static void main(String[] args) throws Exception
Der Zugriff auf die main()
Methode ist von jeder Klasse aus möglich, wie durch das public
Schlüsselwort angegeben.
Die Methode ist statisch und kann daher explizit als aufgerufen werden Solution.main()
.
Die main
Methode gibt kein Ergebnis zurück. Der Rückgabetyp ist void
(kein Typ).
Die main
Methode akzeptiert Argumente(!): ein Array von Zeichenfolgen. Und der Parametername args
suggeriert uns „Argumente“. Wenn das Programm startet, können Sie ihm Argumente übergeben – ein Array von Zeichenfolgen. Sie werden im args
Array der main()
Methode enthalten sein.
In der Methode können unbehandelte Fehler wie Exception
(oder ihre Nachkommen) auftreten main()
.
GO TO FULL VERSION