Abstrakte Klassen
Benötigtes Vorwissen
Häufig lassen sich Objektgruppen nicht trennscharf abbilden. Es kommt vor, dass Objektgruppen eigenständig genug, aber zu übereinstimmend mit anderen Objektgruppen sind, um von vollständig logisch zu unterscheidenden Objektgruppen zu sprechen. Java bietet für diese Fälle die Möglichkeit eine abstrakte Klasse zu initialisieren, die ausschließlich als Mutterklasse agiert. In dieser Klasse lassen sich alle Gemeinsamkeiten deklarieren, die an die Tochterklassen vererbt werden können.
Die Syntax einer abstrakten Klasse lautet: Modifizierer abstract class Bezeichner
public abstract class Mensch {
public void laufen(){
}
}
public class Spieler extends Mensch{
private String spielerName;
private String spielerGeschlecht;
public Spieler(String spielerName){
this.spielerName=spielerName;
}
public String getSpielerName(){
return this.spielerName;
}
}
Die Instanzierung kann deutlich erfolgen, auch in der erbenden Spieler Klasse. Folgendes ist möglich, Auszug aus der main():
public static void main(String[] args){
Spieler spieler1 = new Spieler("Testspieler");
Mensch spieler2 = new Spieler("NeuerSpieler");
Mensch[] mannschaft = new Mensch[]{new Spieler("TeamPlayer1"),new Spieler("TeamPlayer1")};
}
Hinweis:
Eine Besonderheit zeigt Zeile 4. Hier wird mittels new Mensch[ ] keine eigene Instanz der abstrakten Klasse Mensch gebildet. Es wird lediglich der Datentyp zur Instanzierung übergeben. Die Instanzen sind vom Typ Objekt Spieler.
Abstrakte Methoden
Abstrakte Methoden sind in der Mutterklasse, in der sie stehen, nur Konstrukte. Erst die Tochterklasse kümmert sich zur instanzierbaren Deklaration. Eine Abstrakte Klasse kann aus abstrakten Methoden und ausdeklarierten Methoden bestehen. Das bedeutet für die Tochterklassen, dass bei volldeklarierter Methoden, keine Spezialisierung durch Überschreiben notwendig ist. Abstrakte Methoden sind häufig nicht volldeklariert und müssen durch Überschreiben instanzierbar gemacht werden.
Lizenziert unter Creative Commons Attribution Non-commercial Share Alike License 3.0