Abstrakte Klassen: Unterschied zwischen den Versionen
Aus FI-Wiki
Keine Bearbeitungszusammenfassung |
|||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Abstrakte Klassen dienen als allgemeine Oberklassen und können nicht direkt instanziiert werden. Sie enthalten oft gemeinsame Implementierungen sowie abstrakte Methoden, die von Unterklassen konkret definiert werden müssen. | Abstrakte Klassen dienen als allgemeine Oberklassen und können nicht direkt instanziiert werden. Sie enthalten oft gemeinsame Implementierungen sowie abstrakte Methoden, die von Unterklassen konkret definiert werden müssen. | ||
== Eigenschaften == | |||
* Mit dem Schlüsselwort '''abstract''' gekennzeichnet | * Mit dem Schlüsselwort '''abstract''' gekennzeichnet | ||
| Zeile 9: | Zeile 7: | ||
* Dürfen nicht instanziiert werden (kein '''new''') | * Dürfen nicht instanziiert werden (kein '''new''') | ||
== Beispiel == | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
abstract class Figur { | abstract class Figur { | ||
String farbe; | String farbe; | ||
public void setFarbe(String farbe) { | public void setFarbe(String farbe) { | ||
| Zeile 25: | Zeile 22: | ||
} </syntaxhighlight> | } </syntaxhighlight> | ||
== | == Unterklassen müssen Methode implementieren == | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
| Zeile 31: | Zeile 28: | ||
double radius; | double radius; | ||
@Override | |||
@Override | double berechneFlaeche() { | ||
double berechneFlaeche() { | return Math.PI * radius * radius; | ||
} | |||
} | } | ||
class Rechteck extends Figur { | |||
double breite; | |||
double hoehe; | |||
@Override | |||
double berechneFlaeche() { | |||
return breite * hoehe; | |||
} | |||
} </syntaxhighlight> | } </syntaxhighlight> | ||
== Verwendung == | |||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
| Zeile 46: | Zeile 52: | ||
f.setFarbe("rot"); | f.setFarbe("rot"); | ||
System.out.println(f.berechneFlaeche()); | System.out.println(f.berechneFlaeche()); | ||
Figur g = new Rechteck(); | |||
g.setFarbe("gelb"); | |||
System.out.println(g.berechneFlaeche()); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Kategorie:Programmieren]] | [[Kategorie:Programmieren]] | ||
[[Kategorie:Semester2]] | [[Kategorie:Semester2]] | ||
Aktuelle Version vom 11. Januar 2026, 17:25 Uhr
Abstrakte Klassen dienen als allgemeine Oberklassen und können nicht direkt instanziiert werden. Sie enthalten oft gemeinsame Implementierungen sowie abstrakte Methoden, die von Unterklassen konkret definiert werden müssen.
Eigenschaften
- Mit dem Schlüsselwort abstract gekennzeichnet
- Können konkrete (implementierte) und abstrakte (nicht implementierte) Methoden enthalten
- Dürfen nicht instanziiert werden (kein new)
Beispiel
abstract class Figur {
String farbe;
public void setFarbe(String farbe) {
this.farbe = farbe;
}
// abstrakte Methode ohne Implementierung
abstract double berechneFlaeche();
}
Unterklassen müssen Methode implementieren
class Kreis extends Figur {
double radius;
@Override
double berechneFlaeche() {
return Math.PI * radius * radius;
}
}
class Rechteck extends Figur {
double breite;
double hoehe;
@Override
double berechneFlaeche() {
return breite * hoehe;
}
}
Verwendung
Figur f = new Kreis();
f.setFarbe("rot");
System.out.println(f.berechneFlaeche());
Figur g = new Rechteck();
g.setFarbe("gelb");
System.out.println(g.berechneFlaeche());
