Methoden in Java

1. Einleitung

In Java definieren Methoden die Geschäftslogik einer Anwendung. Sie definieren die Interaktionen zwischen den in einem Objekt enthaltenen Daten.

In diesem Tutorial werden wir die Syntax von Java-Methoden, die Definition der Methodensignatur sowie das Aufrufen und Überladen von Methoden erläutern .

2. Methodensyntax

Erstens besteht eine Methode aus sechs Teilen:

  • Zugriffsmodifikator: Optional können wir angeben, von welchem ​​Code aus auf die Methode zugegriffen werden kann
  • Rückgabetyp: Der Typ des von der Methode zurückgegebenen Werts, falls vorhanden
  • Methodenkennung: Der Name, den wir der Methode geben
  • Parameterliste: Eine optionale durch Kommas getrennte Liste der Eingaben für die Methode
  • Ausnahmeliste: Eine optionale Liste von Ausnahmen, die die Methode auslösen kann
  • Body: Definition der Logik (kann leer sein)

Sehen wir uns ein Beispiel an:

Schauen wir uns jeden dieser sechs Teile einer Java-Methode genauer an.

2.1. Zugriffsmodifikator

Mit dem Zugriffsmodifikator können wir angeben, welche Objekte Zugriff auf die Methode haben können. Es gibt vier mögliche Zugriffsmodifikatoren: public, protected, private und default (auch als package-private bezeichnet ).

Eine Methode kann auch das statische Schlüsselwort vor oder nach dem Zugriffsmodifikator enthalten. Dies bedeutet, dass die Methode zur Klasse und nicht zu den Instanzen gehört. Daher können wir die Methode aufrufen, ohne eine Instanz der Klasse zu erstellen. Methoden ohne das statische Schlüsselwort werden als Instanzmethoden bezeichnet und können nur für eine Instanz der Klasse aufgerufen werden.

In Bezug auf die Leistung wird eine statische Methode nur einmal - während des Ladens der Klasse - in den Speicher geladen und ist somit speichereffizienter.

2.2. Rückgabetyp

Methoden können Daten an den Code zurückgeben, von dem aus sie aufgerufen wurden. Eine Methode kann einen primitiven Wert oder eine Objektreferenz zurückgeben, oder sie kann nichts zurückgeben, wenn wir das Schlüsselwort void als Rückgabetyp verwenden.

Sehen wir uns ein Beispiel für eine void- Methode an:

public void printFullName(String firstName, String lastName) { System.out.println(firstName + " " + lastName); }

Wenn wir einen Rückgabetyp deklarieren, müssen wir im Methodenkörper eine return- Anweisung angeben . Sobald die return- Anweisung ausgeführt wurde, ist die Ausführung des Methodenkörpers abgeschlossen. Wenn weitere Anweisungen vorhanden sind, werden diese nicht verarbeitet.

Andererseits gibt eine void- Methode keinen Wert zurück und hat daher keine return- Anweisung.

2.3. Methodenkennung

Die Methodenkennung ist der Name, den wir einer Methodenspezifikation zuweisen. Es wird empfohlen, einen informativen und beschreibenden Namen zu verwenden. Es ist erwähnenswert, dass eine Methodenkennung höchstens 65536 Zeichen haben kann (allerdings ein langer Name).

2.4. Parameterliste

Wir können Eingabewerte für eine Methode in ihrer Parameterliste angeben , die in Klammern eingeschlossen ist. Eine Methode kann zwischen 0 und 255 Parameter haben, die durch Kommas getrennt sind. Ein Parameter kann ein Objekt, ein Grundelement oder eine Aufzählung sein. Wir können Java-Annotationen auf der Ebene der Methodenparameter verwenden (zum Beispiel die Spring-Annotation @RequestParam ).

2.5. Ausnahmeliste

Mithilfe der throw- Klausel können wir angeben, welche Ausnahmen von einer Methode ausgelöst werden . Im Falle einer aktivierten Ausnahme müssen wir entweder den Code in eine try-catch- Klausel einschließen oder eine throw- Klausel in die Methodensignatur einfügen.

Schauen wir uns also eine komplexere Variante unserer vorherigen Methode an, die eine aktivierte Ausnahme auslöst:

public void writeName(String name) throws IOException { PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); out.println("Name: " + name); out.close(); }

2.6. Methodenkörper

Der letzte Teil einer Java-Methode ist der Methodenkörper, der die Logik enthält, die wir ausführen möchten. Im Methodenkörper können wir so viele Codezeilen schreiben, wie wir möchten - oder überhaupt keine bei statischen Methoden. Wenn unsere Methode einen Rückgabetyp deklariert, muss der Methodenkörper eine return-Anweisung enthalten.

3. Methodensignatur

Gemäß seiner Definition besteht eine Methodensignatur nur aus zwei Komponenten - dem Namen der Methode und der Parameterliste .

Schreiben wir also eine einfache Methode:

public String getName(String firstName, String lastName) { return firstName + " " + middleName + " " + lastName; }

Die Signatur dieser Methode lautet getName (String firstName, String lastName) .

Die Methodenkennung kann eine beliebige Kennung sein. Wenn wir jedoch gängigen Java-Codierungskonventionen folgen, sollte die Methodenkennung ein Verb in Kleinbuchstaben sein, auf das Adjektive und / oder Substantive folgen können.

4. Eine Methode aufrufen

Lassen Sie uns nun untersuchen, wie eine Methode in Java aufgerufen wird . Nehmen wir nach dem vorherigen Beispiel an, dass diese Methoden in einer Java-Klasse namens PersonName enthalten sind :

public class PersonName { public String getName(String firstName, String lastName) { return firstName + " " + middleName + " " + lastName; } }

Da unsere getName- Methode eine Instanzmethode und keine statische Methode ist, müssen wir zum Aufrufen der Methode getName eine Instanz der Klasse PersonName erstellen :

PersonName personName = new PersonName(); String fullName = personName.getName("Alan", "Turing");

Wie wir sehen können, verwenden wir das erstellte Objekt, um die getName- Methode aufzurufen .

Finally, let's take a look at how to call a static method. In the case of a static method, we don't need a class instance to make the call. Instead, we invoke the method with its name prefixed by the class name.

Let's demonstrate using a variant of the previous example:

public class PersonName { public static String getName(String firstName, String lastName) { return firstName + " " + middleName + " " + lastName; } }

In this case, the method call is:

String fullName = PersonName.getName("Alan", "Turing");

5. Method Overloading

Java allows us to have two or more methods with the same identifier but different parameter list — different method signatures. In this case, we say that the method is overloaded. Let's go with an example:

public String getName(String firstName, String lastName) { return getName(firstName, "", lastName); } public String getName(String firstName, String middleName, String lastName) { if (!middleName.isEqualsTo("")) { return firstName + " " + lastName; } return firstName + " " + middleName + " " + lastName; }

Method overloading is useful for cases like the one in the example, where we can have a method implementing a simplified version of the same functionality.

Schließlich besteht eine gute Entwurfsgewohnheit darin, sicherzustellen, dass sich überladene Methoden ähnlich verhalten. Andernfalls ist der Code verwirrend, wenn sich eine Methode mit demselben Bezeichner anders verhält.

6. Fazit

In diesem Tutorial haben wir die Teile der Java-Syntax untersucht, die beim Angeben einer Methode in Java eine Rolle spielen.

Insbesondere haben wir den Zugriffsmodifikator, den Rückgabetyp, die Methodenkennung, die Parameterliste, die Ausnahmeliste und den Methodenkörper durchgesehen. Dann sahen wir die Definition der Methodensignatur, wie man eine Methode aufruft und wie man eine Methode überlädt.

Der hier gezeigte Code ist wie üblich auf GitHub verfügbar.