Methode

aus www.iwiki.de, der freien Wissensdatenbank

Eine Methode, engl. method, ist ein integraler Bestandteil einer Klasse in Java und bestimmt deren Funktionen und Verhalten. Anders ausgedrückt bedeutet dies, alle Funktionen (Operationen), die eine Klasse erfüllen soll, werden in Methoden implementiert.

Eine Methode kann Anweisungen und Variablen beinhalten und muss innerhalb einer Klasse stehen. Der Code wird erst ausgeführt, wenn die Methode explizit aufgerufen wird (Außnahme: Konstruktor).

Bei dem Methodenaufruf können Parameter übergeben werden, welche die Methode dann entsprechend verwendet. Als Ergebnis gibt die Methode mit Hilfe der return-Anweisung einen Wert zurück. Der Typ des Rückgabewertes muss bei der Methodendeklaration angegeben werden. Für den Fall, dass die Methode keinen Wert zurückgeben soll, kann man bei der Deklaration das Schlüsselwort void verwenden. Dies ist z.B. der Fall bei der Deklaration der main-Methode.


Inhaltsverzeichnis

Instanzmethode und Klassenmethode

Wird bei der Methodendeklaration das Schlüsselwort static verwendet, handelt es sich bei der Methode um eine so genannte Klassenmethode. Wird static nicht verwendet, ist die Methode eine Instanzmethode.

Klassenmethoden sind nicht wie Instanzmethoden an ein bestimmtes Objekt, also Instanz einer Klasse gebunden, sondern an die Klasse selbst. Von diesen Methoden muss auch keine Instanz gebildet werden um sie zu verwenden, sondern können über Klassennamen und Methodenname (getrennt durch einen Punkt) direkt aufgerufen werden.

<Klassenname>.<Methodenname> ([Parameter]);

Ein evtl. bekanntes Beispiel ist die Klasse Math der Java Klassen-Bibliothek.


Deklaration

Bei der Deklaration einer Methode müssen folgende Dinge beachtet werden:

Es können so genannte Modifier angegeben werden. Dazu gehören Schlüsselwörter wie private, public, protected und static. Wobei die ersten drei genannten Schlüsselwörter die Zugriffsmöglichkeiten durch Methoden anderer Klassen bestimmen und nur maximal eines dieser verwendet werden darf. Falls keines angeben wird, verwendet Java automatisch public. Das Wort static hingegen gibt an, dass es sich um eine Klassenmethode handeln soll.

Pflicht bei der Deklaration ist die Definition des Rückgabetyps, hier muss man einen Datentyp (z.B. int oder String) bzw. ein Datenfeld (z.B. int[]) oder falls kein Wert zurückgegeben werden soll, das Schlüsselwort void angeben.

Als nächstes folgt die Angabe des Namens (Pflicht) und in runden Klammern die Angabe von Parameterplatzhaltern. Letzteres ist optional. Sollen also beim Aufruf der Methode keine Parameter übergeben werden, wird ein leeres Klammernpaar verwendet. Bei der Angabe der Parameterplatzhalter werden zuerst der Typ und anschließend der Name des Platzhalters definiert. Es können mehrere Platzhalter verwendet werden, diese sind dann durch Komma von einander zu trennen. Innerhalb der Methode kann man die übergebenen Werte dann mit Hilfe der Platzhalternamen wie jede andere Variable ansprechen.

Wenn eine Fehlerbehandlung (Exceptions) implementiert werden soll, kann bei der Methodendeklaration die throws-Klausel verwendet werden.

Zusammengefasst ergibt das folgende Deklarationssyntax:

[<Folge von Modifiern>] <Rückgabetyp> <Methodenname> ( [Parameter1], [Parameter2], …)
[ throws-Klausel]
{
 ...
} //endmethod

Beispiele

Einfachste Methodendeklaration:

int beispielmethode ()
{
 …
}

Mit Modifiern und Parametern:

public static void main (String [] args)
{
 …
}
private int doSomething (int i1, int i2)
{
 ...
}


Überladen von Methoden

Das Überladen von Methoden bedeutet, dass Java die Möglichkeit bietet, mehreren Methoden innerhalb einer Klasse den gleichen Namen zu geben. Zu beachten ist aber, dass die Methoden sich durch bestimmte Merkmale (Parametertyp, Parameteranzahl, Parameterreihenfolge) unterscheiden müssen. Je nach dem welche Parameter beim Aufruf einer solchen Methode angegeben werden, entscheidet Java welche Methode zu wählen ist.


Rückgabe von Werten

Falls nicht void, sondern ein Datentyp bzw. Objekt als Rückgabetyp bei der Methodendeklaration angegeben wird, muss auch die Methode auch etwas zurückgeben. Dies geschieht mit Hilfe der return-Anweisung.

Int i = 0
…
return i;


Erzeugung von Instanzen

Um auf Instanzmethoden zugreifen zu können, muss zuerst eine Instanz der Klasse erzeugt werden, die diese Methode enthält. Dafür sind im wesentlichen zwei Schritte nötig.

Als erstes wird eine Referenzvariable vereinbart.

int [] array_ref;

Als nächstes muss der Variablen die Referenz zu der benötigten Klasse zugewiesen werden. Damit ist das konkrete Objekt erzeugt.

Beispiele

explizit:

array_ref = new  int[10];

implizit:

int [] array_ref = {0,15,5,3,7,-20,4,2,3,65};
int [] array_ref = (int []) quelle_ref .clone();


Konstruktor

Ein Konstruktor ist eine Spezialmethode, welche bei Erzeugung einer Instanz einer Klasse von Java automatisch aufgerufen wird und ermöglicht den Attributen bestimmte Anfangswerte zu zuweisen.

Die Merkmale, die den Konstruktor von einer normalen Methode unterscheiden sind folgenden.

Der Konstruktor hat den gleichen Namen wie die Klasse und besitzt keinen Rückgabetyp (void wird auch weggelassen).

Der Konstruktor kann auch hier mehrfach vorkommen, muss sich aber durch die Parameter unterscheiden lassen (siehe Überladen von Methoden).

Beispiele

class Test
{
  int i1;
  double d1;
  String s1_ref = “hmm…“;

  Test ()
  {
    i1 = 0;
    d1 = 0.0;
    s1_ref = “Kein Parameter“;
  } //endmethod Test

  Test (int x, double y, String str_ref)
  {
    i1 = x;
    d1 = y;
    s1_ref = str_ref;
  } //endmethod Test

} // endclass Test

Je nach dem ob und welche Parameter bei der Instanzbildung angegeben werden, ruft Java den entsprechenden Konstruktor auf.

Falls kein Konstruktor implementiert wurde, fügt Java automatisch den Standardkonstruktor ein.

Test()
{
   super();
}

Die Anweisung super() ruft dabei den Konstruktor der Superklasse auf.