Abstrakte Klassen können als Zwischenstufe zwischen
konkreten Klassen und Schnittstellen-Klassen (Interfaces,
siehe dazu Abschnitt 1.9) angesehen werden (jedes Interface ist
auch implizit abstrakt). Wird von einer Klasse gesprochen ist normalerweise eine
konkrete Klasse gemeint, von der mit Hilfe des bekannten
Bei der Deklaration einer abstrakten Methode folgt ein Semikolon direkt im Anschluss an die schließende Klammer ")", welche die Paramterliste der Methode abschließt. MethodenModifiers_opt abstract ReturnTyp MethodenName(FormaleParameterListe_opt); Eine abstrakte Klasse/Methode wird durch das Schlüsselwort
Listing 1.32. /* AbstractExample.java */ public abstract class AbstractExample { String str = "Hello"; public abstract void method1(); public void method2() { System.out.println(str + " concrete method"); } } Im Folgenden sollen zwei konkrete Klassen diese abstrakte Klasse erweitern. Bei der Bildung von Klassenhierarchien ist es sinnvoll abstrakte Superklassen zu bilden, die die gemeinsame Struktur der Subklassen beschreibt bzw. festlegt. Abbildung 1.3. Klassendiagramm: Die Klassen Im Klassendiagramm ist der Name der abstrakten Klasse kursiv geschrieben, um die abstrakte Klasse als solche zu kennzeichnen. Die beiden erbenden Klassen implementieren die abstrakte Methode auf unterschiedliche Weise: Listing 1.33. /* AbstractExampleA.java */ public class AbstractExampleA extends AbstractExample { public void method1() { System.out.println(str + " AbstractExampleA"); } } Listing 1.34. /* AbstractExampleB.java */ public class AbstractExampleB extends AbstractExample { public void method1() { System.out.println(str + " AbstractExampleB"); } } Die konkreten Klassen, die die abstrakte Klasse erweitern, haben ihre eigene
Version (Implementierung) der Methode /* Test.java */ public class Test { public static void main(String[] args) { AbstractExampleA a = new AbstractExampleA(); AbstractExampleB b = new AbstractExampleB(); AbstractExample c = new AbstractExampleB(); a.method1(); b.method1(); c.method1(); } } Die Objektvariable AbstractExample c = new AbstractExampleB(); AbstractExample c; AbstractExampleB c2 = new AbstractExampleB(); c = c2; Dabei wird deutlich, dass
Statische Methoden und statische Felder in abstrakten Klassen Abstrakte Klassen können Klassenmethoden (statische Methoden) und Klassenvariablen (statische Variablen) enthalten. Derartige Mitglieder der abstrakten Klasse sind mit Hilfe einer Klassenreferenz (Punktnotation) direkt ansprechbar. Listing 1.35. /* AbstractExample2.java */ public abstract class AbstractExample2 { static String str = "Hello"; public static void method1() { System.out.println("Hello static method!"); } } Der folgende kurze Quelltext greift auf die statische Variable der
abstrakten Klasse /* Test.java */ public class Test { public static void main(String args[]) { String str = AbstractExample2.str; System.out.println(str); AbstractExample2.method1(); } } Eine mit dem Modifier |
|