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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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] sbelfaecher: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<String> comments; 
- 
-    /** 
-     * Initialisiere die Felder von Beitrag 
-     */ 
-    public Beitrag(String author) 
-    { 
-        username = author; 
-        timestamp = System.currentTimeMillis(); 
-        likes = 0; 
-        comments = new ArrayList<>(); 
-    } 
- 
-    // weitere Methoden 
-} 
-</code> 
- 
- 
-===== 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:** Auch der ''TextBeitrag'' hat einen Autor – bei der Instanziierung eines TextBeitrags muss also das von der Superklasse geerbte Attribut ''username'' mit dem Parameter ''author'' initialisiert werden, aber wie? 
-<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 
-} 
-</code> 
- 
-**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! 
- 
-==== Material ==== 
- 
-{{simplefilelist>.:*}}  
  • faecher/informatik/oberstufe/modellierung/vererbung/konstruktoren/start.1636573137.txt.gz
  • Zuletzt geändert: 10.11.2021 20:38
  • von sbel