Ein Vorlesungsausschnitt mit einem Mentor im Rahmen des Codegym University-Kurses. Melden Sie sich für den gesamten Kurs an.


„Grüße, Amigo! Ich habe gehört, dass du bereits ein gutes Verständnis für Methoden hast?“

„Hallo, Rishi. Ja, ich habe den Trick dieses Lehrers bereits gemeistert. Ich würde sagen, dass es nicht so schlimm war, aber du wirst mir sagen: ‚Nein, nein! Du hast nichts herausgefunden.‘ '"

„Du hast eindeutig zu viel Zeit damit verbracht, mit bestimmten Lehrern zu plaudern, wahrscheinlich mit Diego. Wie auch immer... ich hoffe immer noch, dass du die Methoden gut genug verstehst. Schließlich werde ich dir heute ein paar Zauberwörter beibringen, die dabei helfen, Methoden zu beschreiben „Einflusssphären“

„Klingt faszinierend.“

„Eigentlich ist alles einfach. 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 privateSchlüsselwort vor einer Methodendeklaration schreiben, kann die Methode nur von derselben Klasse aufgerufen werden, in der sie deklariert ist. Das publicSchlü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. Hier ist eine vollständige Tabelle:

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

„Und hier ist eine vollständige Erklärung der Zugriffsmodifikatoren:

1. publicModifikator

Auf eine mit dem Modifikator markierte Methode (oder Variable oder Klasse) publickann von überall im Programm aus zugegriffen werden . Dies ist das höchste Maß an Offenheit – es gibt keine Einschränkungen.

2. privateModifikator

Auf eine mit dem Modifikator markierte Methode (oder Variable oder Klasse) privatekann 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. protectedModifikator

Wenn eine Methode mit dem protectedModifikator 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.

„Interessant, aber ich bin mir nicht sicher, ob ich diese Modifikatoren sofort an den richtigen Stellen platzieren kann.“

„Sie werden nach und nach dorthin gelangen. Kein Grund zur Sorge im Voraus. Bis Sie das Ende der Java-Syntax-Quest erreicht haben, können Sie den publicModifikator für alle Ihre Methoden (sowie Klassen und Instanzvariablen) verwenden. Sie benötigen den andere Modifikatoren, wenn wir anfangen, OOP aktiv zu lernen.

„Können Sie genauer erklären, warum Zugriffsmodifikatoren benötigt werden?“

„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 oder sie aber nicht, dass andere Programmierer diese Hilfsmethoden aufrufen, weil die Der entsprechende Code funktioniert möglicherweise nicht richtig.

„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.“

"Ich denke ich verstehe."

staticStichwort

„Es gibt noch ein weiteres interessantes Schlüsselwort. Es ist static. Es überrascht nicht, dass es Methoden statisch macht.“

"Was bedeutet das?"

„Ich werde Ihnen später mehr darüber erzählen. Machen Sie sich keine Sorgen. Versuchen Sie zunächst, sich ein paar Fakten über statische Methoden zu merken.

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 Solutionvor 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 von der mainMethode aus aufrufen möchten, als static.

"Warum das?"

„Sie werden diese Frage selbst beantworten, wenn Sie anfangen, OOP zu lernen und verstehen, wie statische Methoden funktionieren. Bis dahin vertrauen Sie mir einfach.“

throwsStichwort

„Es gibt ein weiteres Schlüsselwort, das Sie wahrscheinlich in einer Methodendeklaration gesehen haben – das throwsSchlüsselwort. Im Gegensatz zu Zugriffsmodifikatoren und dem Schlüsselwort wird dieses Schlüsselwort nach den Methodenparametern staticplatziert :

public static Type name(parameters) throws Exception
{
  method body
}

"Und was bedeutet das?"

„Ich muss Ihnen noch einmal sagen, dass Sie den wahren Zweck später erfahren werden, wenn wir Ausnahmen untersuchen (in Level 15).

Aber um es oberflächlich zu betrachten, können wir sagen, dass eine mit dem throwsSchlüsselwort markierte Methode Fehler (Ausnahmen) auslösen kann, also Instanzen der ExceptionKlasse (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.

„Klingt mysteriös und unverständlich! Ich muss auf Level 14 warten.“

Hauptmethode

„Lassen Sie uns nun einen genaueren Blick auf die Hauptmethode werfen. Sie verstehen bereits, dass die Zeile, in der eine Methode deklariert wird und alle Modifikatoren enthält, Einfluss darauf hat, wie diese Methode von anderen Klassen und Methoden aufgerufen wird. Darüber hinaus beeinflusst sie den Typ von Das Ergebnis gibt die Methode zurück 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
Allgemeines Format einer Methodendeklaration

Wo wird durch , , oder gar nichts access modifiersersetzt ;publicprotectedprivate

Wenn die Methode statisch ist, staticerscheint das Schlüsselwort (bei nicht statischen Methoden fehlt es).

Typeist der Typ des Rückgabewerts ( voidwenn es kein Ergebnis gibt)

„Jetzt haben Sie ein viel besseres Verständnis dafür, was all diese Wörter in der Deklaration der mainMethode bedeuten:

public static void main(String[] args) throws Exception
mainMethode deklarieren

„Nun, jetzt ist mir klar, dass der Zugriff auf die main()Methode von jeder Klasse aus möglich ist, wie durch das publicSchlüsselwort angegeben. Die Methode ist statisch, kann also explizit als aufgerufen werden Solution.main().“

„Welches Ergebnis gibt die main()Methode zurück?“

„Überhaupt keine! Der Ergebnistyp ist void. Es ist so etwas wie ein leerer Typ, ein Platzhalter.“

„Was main()steht in Klammern?“

„Hmm... Es stellt sich heraus, dass die mainMethode Argumente (!) akzeptiert. Sie werden als Array von Zeichenfolgen übergeben.“

„Das ist richtig. Und der Parametername argssuggeriert uns ‚Argumente‘. Wenn das Programm startet, können Sie ihm Argumente übergeben – ein Array von Strings. Sie werden im argsArray der main()Methode enthalten sein.“

„Wow! Ich habe mich darüber gewundert, als ich es das erste Mal gesehen habe, aber dann habe ich mich daran gewöhnt und ohne nachzudenken angefangen, die Parameterliste zu schreiben.“

„Das kennen wir alle. Schließlich Exceptionkönnen in der main()Methode unbehandelte Fehler wie (oder ihre Nachkommen) auftreten. Wir wissen das dank des throws ExceptionTeils der Deklaration.“

„Danke, Rishi. Ich habe nicht alles verstanden, aber das war interessant.“

„Gern geschehen. Nach und nach werden Sie all diese subtilen Punkte verstehen, da bin ich mir sicher.“