2.2 KiB
Abstrakte Klassen
Abstrakte Klassen
In abstrakten Klassen können Operationen ohne eine Implementation deklariert werden.
abstract double gibFlaeche();
Abstrakte Klassen
Eine Klasse mit mindestens einer abstrakten Methode muss abstrakt sein.
Es können keine Instanzen einer abstrakten Klasse erzeugt werden.
abstract class Form
{
abstract double gibFlaeche();
String toString()
{
return "Form";
}
}
Benutzung
Es können keine Instanzen einer abstrakten Klasse erzeugt werden. Trotzdem definieren die abstrakten Klassen einen Typ.
// Deklaration
class Kreis extends Form {
private double _radius;
Circle(double rad) {radius = rad;}
double gibFlaeche(){
return 3.14 * radius * radius;
}
}
// Benutzung
Form form1 = new Kreis(4.5);
Verwendung
Abstrakte Klassen werden immer benutzt wenn Code wiederverwendet werden soll, aber nicht alle Details bekannt sind. Dabei wird häufig das Prinzip der Schablonen- und Einschubmethoden genutzt.
abstract class DreidimensionaleForm {
private double _hoehe;
abstract double gibFlaeche();
double gibVolumen() {
return gibFlaeche() * _hoehe;
}
}
- Welche Methode ist die Einschubmethode und welche die Schablonenmethode?
Übung
-
Müssen alle abstrakten Methoden eine abstrakten Klasse in einer Subklasse implementiert werden?
- Ja, denn ansonsten fehlt für manche Operationen die Implementation.
-
Sind alle Felder der abstrakten Klasse auch in der Subklasse enthalten?
- Ja
-
Darf auf alle Felder der Superklasse aus der Subklasse zugegriffen werden?
- Nur solange die Modifier
private
,protected
oderpackage private
sind.
- Nur solange die Modifier
- Ändere die Klasse
Animal
zu einer abstrakten Klasse. Alle Methoden die beiSheep
undCow
gleich sind müssen nicht abstrakt sein. Füge aber eine abstrakte MethodeString makeNoise()
ein. Ändere den Code and den richtigen Stellen ab.