faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:modellierung:vererbung:konstruktoren:start [10.11.2021 19:38] – [Konstruktoren und Vererbung] sbelfaecher: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 ======
 +
 +
 +{{:aufgabe.png?nolink  |}}
 +=== (A1) Ausprobieren ===
 +
 +Experimentiere zunächst mit der Vorlage von https://codeberg.org/qg-info-unterricht/school-net-qg-v2. Die Vorlage enthält eine Version des NewsFeeds, in der Vererbung wie bisher besprochen implementiert ist. 
 +
 +Die Diagramme in der BlueJ-Oberfläche zeigen die Vererbungsbeziehungen an. 
 +
 +  * Öffne den Quelltext der Klasse ''TextBeitrag()'' und entferne "extends Beitrag" in der Klassendefinition. Übersetze die Klasse erneut. Welche Veränderung beobachtest du am Klassendiagramm? Füge anschließend "extends Beitrag" wieder ein. 
 +  * Erzeuge ein TextBeitrags-Objekt. Rufe einige seiner Methoden auf. Kannst du auch die geerbten Methoden aufrufen, z.B ''erfasseKommentar''? Was beobachtest du bei den geerbten Methoden? 
 +
 +
  
 ===== Superklasse ===== ===== Superklasse =====
Zeile 55: Zeile 68:
 </code> </code>
  
-**Lösung:** Der Konstruktor der abgeleiteten Klasse ruft **immer** den Konstruktor der Superklasse auf: ''super(…parameter…);''+**Lösung:** Der Konstruktor der abgeleiteten Klasse ruft **immer** den Konstruktor der Superklasse auf: ''super(…parameter…);''  So werden alle geerbten Attribute initialisisert, wenn ein Objekt der abgeleiteten Klasse instanziiert wird. 
 + 
 +**Achtung:** Wenn der super-Aufruf nicht explizit angegeben wird, wird super implizit ohne Argumente aufgerufen! 
 + 
 +===== Zusammenfassung ===== 
 + 
 +<WRAP center round box 90%> 
 +  * Die Konstruktoren abgeleiteter Klassen müssen **immer** einen Aufruf des Konstruktors der Superklasse (''super'') beinhalten.  
 +  *** Wenn der Programmierer keinen ''super''-Aufruf in seinen Code einfügt, macht das der Compiler**.  Dann wird super ohne Parameter aufgerufen – das geht schief, wenn der Konstruktor der Superklasse Parameter benötigt. 
 +  * Der ''super''-Aufruf muss **das erste Statement** im Konstruktor der abgeleiteten Klasse sein.
  
-So werden alle geerbten Attribute initialisisert, wenn ein Objekt der abgeleiteten Klasse instanziiert wird. 
  
-Achtung: Wenn der super-Aufruf nicht explizit angegeben wird, wird super implizit ohne Argumente aufgerufen!+</WRAP>
  
 ==== Material ==== ==== Material ====
  
 {{simplefilelist>.:*}}  {{simplefilelist>.:*}} 
  • faecher/informatik/oberstufe/modellierung/vererbung/konstruktoren/start.1636573137.txt.gz
  • Zuletzt geändert: 10.11.2021 19:38
  • von sbel