Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start [10.11.2021 19:36] – [Konstruktoren und Vererbung] sbel | faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start [12.10.2023 10:22] (aktuell) – [Konstruktoren und Vererbung] Svenja Müller | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Konstruktoren und Vererbung ====== | ====== Konstruktoren und Vererbung ====== | ||
+ | |||
+ | {{: | ||
+ | === (A1) Ausprobieren === | ||
+ | |||
+ | Experimentiere zunächst mit der Vorlage von https:// | ||
+ | |||
+ | Die Diagramme in der BlueJ-Oberfläche zeigen die Vererbungsbeziehungen an. | ||
+ | |||
+ | * Öffne den Quelltext der Klasse '' | ||
+ | * Erzeuge ein TextBeitrags-Objekt. Rufe einige seiner Methoden auf. Kannst du auch die geerbten Methoden aufrufen, z.B '' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Superklasse ===== | ||
+ | |||
Der Konstruktor der Superklasse initialisiert die in der Superklasse festgelegten Attribute: | Der Konstruktor der Superklasse initialisiert die in der Superklasse festgelegten Attribute: | ||
Zeile 25: | Zeile 40: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Was macht der Konstruktor einer abgeleiteten Klasse? ===== | ||
+ | |||
+ | Bei der Instanziierung eines Objekts einer abgeleiteten Klasse wird zunächst immer der Konstruktor der abgeleiteten Klasse aufgerufen. | ||
+ | |||
+ | **Problem: | ||
+ | <code java> | ||
+ | public class TextBeitrag extends Beitrag | ||
+ | { | ||
+ | private String message; | ||
+ | |||
+ | /** | ||
+ | * Konstruktor fuer TextBeitrag-Objekte | ||
+ | */ | ||
+ | public TextBeitrag(String author, String text) | ||
+ | { | ||
+ | // PROBLEM: username muss irgendwie auf author | ||
+ | // gesetzt werden?! | ||
+ | |||
+ | // das ist klar. | ||
+ | message = text; | ||
+ | } | ||
+ | |||
+ | // methods omitted | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **Lösung: | ||
+ | |||
+ | **Achtung: | ||
+ | |||
+ | ===== Zusammenfassung ===== | ||
+ | |||
+ | <WRAP center round box 90%> | ||
+ | * Die Konstruktoren abgeleiteter Klassen müssen **immer** einen Aufruf des Konstruktors der Superklasse ('' | ||
+ | *** Wenn der Programmierer keinen '' | ||
+ | * Der '' | ||
+ | |||
+ | |||
+ | </ | ||
==== Material ==== | ==== Material ==== | ||
{{simplefilelist> | {{simplefilelist> |