Abstract in Java
In diesem Tutorial beschäftigen wir uns um den Begriff Abstract in Java und damit was man damit anstellen kann.
Der Modifikator abstract kann bei einer Methode, Klasse oder einem Interface verwendet werden. Das heißt, dass das mit abstract gekennzeichnete Element noch nicht vollständig implementiert worden ist. Wenn eine Methode oder ein Interface mit dem Mofikator abstract versehen ist, dann muss die implementierende Klasse auch als abstract deklariert werden. Wenn eine Klasse mit abstract gekennzeichnet wird, dann kann von dieser kein Objekt erzeugen.
Eine von einer abstrakten Klasse erbende Subklasse muss alle abstrakten Methoden der Superklasse vollständig implementieren, sonst muss sie auch als abstract deklariert werden. Anders als bei einem Interface kann eine abstrakte Klasse auch implementierte Methoden und Attribute, die nicht als static oder final deklariert wurden, beinhalten. Sollte man also keine Implementierung bei einer abstrakten Klasse durchführen, macht es mehr Sinn diese als Interface zu deklarieren.
Beispiel für Abstract in Java
public abstract class Auto{
int geschwindigkeit;
abstract void fahre();
}
Die Klasse Auto beinhaltet die abstrakte Methode fahre. Da diese Methode mit abstract gekennzeichnet ist, besitzt sie keinen Methodenrumpf. Der Methodenkopf wird direkt durch ein Semikolon beendet. Wenn eine Methode in einer Klasse abstract ist, muss auch die Klasse selbst abstract sein. Wenn jedoch die Klasse abstract ist, müssen die Methoden der Klasse nicht zwingend abstract sein.
Warum hat die Methode fahre() keinen Methodenrumpf?! Das liegt daran, dass unsere Klasse Auto in diesem Fall Abstract ist, und somit kein Objekt von ihr erstellt werden kann. Jedoch wissen wir auch, dass es sich um eine Superklasse handelt. Die Methode fahre() muss in den Subklassen vorhanden sein und einen Methodenrumpf erhalten.
public class BMW extends Auto{
public void fahre(){
System.out.println("Ich fahre einen BMW!");
}
}
Ebenso muss die Methode fahre() in der Subklasse Audi einen Methodenrumpf erhalten.
public class Audi {
public void fahre() {
System.out.println("Ich fahre einen Audi!");
}
}
Außerdem müssen wir berücksichtigen, dass die Zugriffsrechte auf die Methode in der Subklasse die gleichen sein müssen wie in der Superklasse. Wenn eine Methode in der Superklasse also folgendermaßen erzeugt wird…
void methode();
…, dann darf sie in der Subklasse nicht plötzlich ein public davor stehen haben.
Damit wären wir mit dem Thema abstract in Java fertig. Im nächsten Tutorial werden wir uns mit toString beschäftigen.