Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:glossar:vererbung:start [04.04.2022 08:57] – angelegt Matthias Waffenschmidt | faecher:informatik:oberstufe:glossar:vererbung:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Vererbung ====== | ||
- | Ist eine [[..: | ||
- | |||
- | Diese Vererbung schließt alles von der Superklasse ein, von der man erbt : [[..: | ||
- | |||
- | Die Vererbung wird in Java durch das Schlüsselwort //extends// in der Signatur der Klasse defniert, z.B.: | ||
- | |||
- | <code java> | ||
- | public class Dalmatiner extends Hund | ||
- | </ | ||
- | |||
- | Man spricht hier auch von einer "Ist ein" | ||
- | |||
- | Dabei kann es sich bei der Klasse, von der man erbt, sowohl um eine gewöhnliche als auch eine [[..: | ||
- | |||
- | Wird bei der Definition einer Klasse das extends weggelassen, | ||
- | |||
- | Im Gegensatz zu anderen objektorientierten Programmiersprachen kann eine Klasse nur von einer anderen Klasse direkt erben, eine sogenannte Mehrfachvererbung ist nicht möglich. | ||
- | |||
- | Überschreibt man eine Methode oder einen Konstuktor, so kann man mit dem Schlüssel //super// weiterhin auf das Element der Superklasse zugreifen, z.B.: | ||
- | |||
- | <code java> | ||
- | public class Dalmatiner extends Hund | ||
- | { | ||
- | private int punkte; | ||
- | public Dalmatiner (int punkte) | ||
- | { | ||
- | super(); | ||
- | this.punkte = punkte; | ||
- | } | ||
- | | ||
- | public void fresse(int futter) | ||
- | { | ||
- | super.fresse(futter); | ||
- | this.punkte += punkte; | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Bei einem Konstruktor kommt noch folgende Besonderheit dazu: Wird in der ersten Zeile nicht explizit ein Konstruktor aufgerufen, so ruft Java als erste Anweisung im Konstruktor die Zeile // |