Struktur und Syntax


2.4 Klassen und Interfaces

Java hat eine umfangreiche Klassenbibliothek, die vielfältige Möglichkeiten bietet Objekte zu verändern. Basisklasse ist eine Klasse des Namens Object, von der alle anderen Klassen abgeleitet werden. Die folgenden Klassen oder Packages bieten allerlei Möglichkeiten, eine moderne, komfortable und für den Benutzer gewohnte Umgebung zu schaffen. Um dem Compiler mitzuteilen, wo er die Definitionen zu den verwendeten Klassentypen findet, verwendet man in Java die sog. import Anweisung, gefolgt vom Namen des Packages, z.B. import java.awt.*. Um Klassen besser erklären zu können folgt nun eine einfache Definition.

class adress
{
String name ;
String phone ;

public adress ( String init_name, String init_phone )
{
name = init_name ;
phone = init_phone ;
}

public void clear ( )
{
name = "" ;
phone = "" ;
}

public void display ( )
{
System.out.print ("\nName: ") ;
System.out.println (name) ;
System.out.print ("Phone: ") ;
Sytem.out.println (phone) ;
}
}

Die Methode, die eine Instanz dieser Klasse erzeugt (Konstruktor) hat den gleichen Namen wie die Klasse selbst. Um eine abgeleitete Klasse zu erzeugen, welche die Methoden der Superklasse erbt, benutzen wir das Schlüsselwort extends.

class priv_adress extends adress

Falls wir in dieser Unterklasse Methoden verwenden, die den gleichen Namen haben wie Methoden in der Superklasse, dann wird die Methode der Superklasse überschrieben, falls sie die gleichen Parameter hat ( dann kann sie nur noch mit dem Schlüsselwort super.classname ( paramlist ) angesprochen werden ). Bei einer unterschiedlichen Parameterliste spricht man von überladenen Funktionen, und es spielt keine Rolle, in welcher Klasse die Methode definiert ist. Java erlaubt eine Reihe von Modifizierern, um eine saubere Trennung zwischen Schnittstelle ( vorzugsweise Methoden ) und Implementierung ( Variablen, die eine Instanz beschreiben ) zu ermöglichen. Bei anderen Sprachen ist es möglich von mehr als einer Klasse zu erben ( multiple inheritance ). Bei Java wurde in Hinblick auf Fehlervermeidung darauf verzichtet. Stattdessen wird das Schlüsselwort implements eingeführt, das der damit definierten Klasse erlaubt, die Methoden eines Interfaces zu benutzen, auch wenn sie von ihr nicht abgeleitet wurde. Interfaces beinhalten abstrake Methoden und können nicht implementiert werden. Ihre Funktionen müssen überschrieben werden, bevor sie benutzt werden können.

class C extends A implements B

Bei Interfaces sind nur 2 Modifizierer möglich.Public und abstract, wobei sie die gleiche Funktionen haben und jedes Interface sowieso abstract ist.