Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start [10.11.2021 20:38] – [Konstruktoren und Vererbung] sbel | faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Konstruktoren und Vererbung ====== | ||
- | ===== Superklasse ===== | ||
- | |||
- | Der Konstruktor der Superklasse initialisiert die in der Superklasse festgelegten Attribute: | ||
- | |||
- | <code java> | ||
- | public class Beitrag | ||
- | { | ||
- | private String username; | ||
- | private long timestamp; | ||
- | private int likes; | ||
- | private ArrayList< | ||
- | |||
- | /** | ||
- | * Initialisiere die Felder von Beitrag | ||
- | */ | ||
- | public Beitrag(String author) | ||
- | { | ||
- | username = author; | ||
- | timestamp = System.currentTimeMillis(); | ||
- | likes = 0; | ||
- | comments = new ArrayList<> | ||
- | } | ||
- | |||
- | // weitere Methoden | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | ===== 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: | ||
- | |||
- | So werden alle geerbten Attribute initialisisert, | ||
- | |||
- | Achtung: Wenn der super-Aufruf nicht explizit angegeben wird, wird super implizit ohne Argumente aufgerufen! | ||
- | |||
- | ==== Material ==== | ||
- | |||
- | {{simplefilelist> |