Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmierung:klassen:vererbung [2024/08/25 16:59] – swe | programmierung:klassen:vererbung [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | # Vererbung |
| - | ===== Superklasse und Subklasse | + | ## Superklasse und Subklasse |
| - | Vererbung ist ein grundlegendes Konzept in der objektorientierten Programmierung (OOP), das es ermöglicht, | + | Vererbung ist ein grundlegendes Konzept in der objektorientierten |
| + | Programmierung (OOP), das es ermöglicht, | ||
| + | einer bestehenden Klasse zu erstellen. Die neue Klasse, die als | ||
| + | **Subklasse** oder Kindklasse bezeichnet wird, erbt die Eigenschaften | ||
| + | und Methoden der bestehenden Klasse, die als **Superklasse** oder | ||
| + | Elternklasse bezeichnet wird. Dies fördert die Wiederverwendbarkeit von | ||
| + | Code und die Hierarchisierung von Klassen. | ||
| - | ==== Superklasse | + | ### Superklasse |
| - | Stellen wir uns vor, wir entwickeln eine Anwendung für ein Tierheim. Wir beginnen mit einer allgemeinen Klasse | + | Stellen wir uns vor, wir entwickeln eine Anwendung für ein Tierheim. Wir |
| + | beginnen mit einer allgemeinen Klasse | ||
| + | Eigenschaften und Methoden für alle Tiere definiert. | ||
| - | < | + | ``` java |
| // Superklasse | // Superklasse | ||
| public class Tier { | public class Tier { | ||
| Line 42: | Line 50: | ||
| } | } | ||
| - | </ | + | ``` |
| - | ==== Subklasse | + | ### Subklasse |
| - | Nun erstellen wir eine Subklasse | + | Nun erstellen wir eine Subklasse |
| + | Die Klasse | ||
| + | übernehmen und kann zusätzliche Eigenschaften und Methoden hinzufügen | ||
| + | oder bestehende Methoden überschreiben. | ||
| - | In diesem Beispiel erbt die Klasse | + | In diesem Beispiel erbt die Klasse |
| + | `alter` sowie die Methode | ||
| - | === Aufruf des Konstruktors der Superklasse: | + | ``` java |
| - | + | ||
| - | === Überschreiben von Methoden der Superklass: @override | + | |
| - | + | ||
| - | Die Methode '' | + | |
| - | + | ||
| - | < | + | |
| // Subklasse | // Subklasse | ||
| public class Hund extends Tier { | public class Hund extends Tier { | ||
| Line 81: | Line 87: | ||
| } | } | ||
| - | </ | + | ``` |
| - | === Aufruf des Konstruktors der Superklasse: | + | |
| - | Beachte Zeile 6: Hier wird durch '' | + | #### Aufruf des Konstruktors der Superklasse: super() |
| - | **Regel**: Eigenschaften werden immer im Konstruktor der Klasse übergeben, | + | Beachte Zeile 6: Hier wird durch `super(name, |
| + | der Superklasse `Tier` aufgerufen und die dort geforderten Parameter | ||
| + | `name` und `alter` übergeben. | ||
| - | So können auf dem Weg von einer Superklasse zur nächsten Subklasse und vielleicht sogar noch einer und noch einer Subklasse einige | + | Eigenschaften |
| + | Eigenschaften definiert. | ||
| - | **Regel**: | + | So können auf dem Weg von einer Superklasse zur nächsten Subklasse und |
| - | **Regel**: | + | vielleicht sogar noch einer und noch einer Subklasse einige |
| - | **Regel**: | + | Eigenschaften und Parameter zusammenkommen. |
| - | <code java [enable_line_numbers=" | + | |
| + | Immer wenn eine Superklasse Parameter übergeben bekommt, muss in der | ||
| + | Subklasse der **Konstruktor der Superklasse** mit eben diesen Parametern | ||
| + | aufgerufen werden. | ||
| + | |||
| + | Dieser Aufruf findet im Konstruktor statt. | ||
| + | |||
| + | Der Aufruf | ||
| + | im Konstruktor**. | ||
| + | |||
| + | ``` java | ||
| ... | ... | ||
| public Hund(String name, int alter, String rasse) { | public Hund(String name, int alter, String rasse) { | ||
| Line 100: | Line 118: | ||
| } | } | ||
| ... | ... | ||
| - | </ | + | ``` |
| + | #### Überschreiben von Methoden der Superklass: \@override | ||
| - | === Überschreiben von Methoden | + | Die Methode `makeSound` wird in der Klasse `Hund` überschrieben, |
| + | spezifisches Verhalten für Hunde zu definieren. | ||
| - | Die Methode '' | + | ``` java |
| - | + | ||
| - | < | + | |
| ... | ... | ||
| @Override | @Override | ||
| Line 114: | Line 132: | ||
| } | } | ||
| ... | ... | ||
| - | </ | + | ``` |
| - | ==== Zusammenspiel/ | + | ### Zusammenspiel/ |
| - | < | + | ``` java |
| public class Main { | public class Main { | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| Line 133: | Line 151: | ||
| } | } | ||
| - | </ | + | ``` |