Klassenmethoden
Der folgende Abschnitt zeigt einige Besonderheiten von JAVA auf, die im Unterricht
keinen Eingang finden müssen, die jedoch eine elegante Möglichkeit zur Realisierung von
allgemein zugänglichen Funktionsbibliotheken bieten.
Wie oben bereits angedeutet, findet sich Funktionalität in JAVA grundsätzlich nur in
Klassen und Objekten. Aus PASCAL kennt man Konstante, Funktionen und Prozeduren, die man
überall verwenden kann, z.B. PI, einen Zufallsgenerator,
trigonometrische Funktionen etc. Um so etwas in JAVA realisieren zu können, bieten sich
Klassenvariable, Klassenkonstante und Klassenmethoden an. Deren Existenz hängt nämlich
nicht von der Erzeugung eines Objektes ab, sondern ist unabhängig davon!
Klassenmethoden, Klasssenvariable und Klassenkonstante werden mit Hilfe des Modifiers static deklariert:
public static double quadrat(double x)
{
return x*x;
}
Nehmen wir an, daß die obige Methode in einer Klasse Hilfe deklariert wurde, so
kann die Methode durch Aufruf von Hilfe.quadrat(...)
benutzt werden, dem Methodenbezeichner wird also der Klassenbezeichner vorangestellt. Im
Lieferumfang von JAVA selbst befindet sich eine Klasse Math,
die nach diesem Prinzip aufgebaut ist. Die Möglichkeiten eine universelle Bibliothek
aufzubauen, wird noch von einer weiteren Besonderheit ergänzt: es ist möglich Methoden
zu überladen. Darunter ist zu verstehen, daß es mehrere Methoden gleichen Namens
innerhalb einer Klasse geben kann, die sich in der Funktionalität unterscheiden. Das
Überladen ist auch möglich und sehr gebräuchlich bei objektgebundenen Methoden. Häufig
werden für eine Klasse verschiedene Konstruktoren offeriert. Die einzige Bedingung für
ihre Deklaration ist, daß die Parameterlisten verschieden sind.
Beispiel:
Bestimmung des Maximums zweier Zahlen
public static int max(int x, int y) {.....}
public static double max (double x, double y) {...}
Die Auswahl der passenden Methode erfolgt zur Laufzeit anhand der aktuellen
Parameter.
Klassenvariable können von allen Objekten der Klasse benutzt werden, existieren
aber nur einmal. So könnte etwa ein Zähler, der die Objekte einer Klasse zählt, mit
Hilfe einer Klassenvariablen realisiert werden. |