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?
- Wenn die Subklasse nicht auch
abstract
sein darf, dann ja.
- Wenn die Subklasse nicht auch
-
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
public
,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.