Abstrakte Klassen: Unterschied zwischen den Versionen

Aus FI-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Abstrakte Klassen ==
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 ===
== 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 ===
== Beispiel ==


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
Zeile 15: Zeile 13:
     String farbe;
     String farbe;


```
    public void setFarbe(String farbe) {
public void setFarbe(String farbe) {
        this.farbe = farbe;
    this.farbe = farbe;
    }
}


// abstrakte Methode ohne Implementierung
    // abstrakte Methode ohne Implementierung
abstract double berechneFlaeche();
    abstract double berechneFlaeche();
```


} </syntaxhighlight>
} </syntaxhighlight>


=== Unterklassen müssen Methode implementieren ===
== Unterklassen müssen Methode implementieren ==


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
Zeile 32: Zeile 28:
     double radius;
     double radius;


```
    @Override
@Override
    double berechneFlaeche() {
double berechneFlaeche() {
        return Math.PI * radius * radius;
    return Math.PI * radius * radius;
    }
}
```


}
}


class Rechteck extends Figur {
class Rechteck extends Figur {
double breite;
    double breite;
double hoehe;
    double hoehe;


```
    @Override
@Override
    double berechneFlaeche() {
double berechneFlaeche() {
        return breite * hoehe;
    return breite * hoehe;
    }
}
```


} </syntaxhighlight>
} </syntaxhighlight>


=== Verwendung ===
== Verwendung ==


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
Zeile 60: 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());