In diesem Abschnitt geht es uns jetzt darum,
die beiden Begriffe redefinieren, redeklarieren und auch noch gleich überladen zu erklären.
Wir machen weiter bei der Folie 15 in diesem Foliensatz.
Da muss ich selber auch hinspringen. Und zunächst erst mal
die Situation wieder mit dieser Klasse Konto,
die wir auch schon mal hatten. Also die Superklasse,
die Oberklasse hat hier eine Schnittstelle und eine Implementation.
Das ist das, was wir ja als Methode bezeichnen,
wenn wir
nur die Schnittstelle haben
Spreifen, bezeichnen wir es als Operation.
Und die Unterklasse ist die Spezialisierung, fügt Eigenschaften hinzu,
in dem Fall, das Sparbuch hat auch eine Zinsberechnung.
Und hier gibt es die Operation, mache Jahresabschluss,
die gibt es hier unten auch, aber die Implementierung soll eine andere sein.
Also wir haben hier eine andere Berechnung als hier und deswegen wird etwas anderes gebraucht. Ja,
also was wir zunächst erstmal haben, die Möglichkeit,
wir fangen mal damit an, dass wir die Operation,
die Methode anschauen, die hier das in beiden Klassen vorhanden ist,
wenn wir eine Instanz, ein Exemplar der Klasse Sparbuch haben,
dann wird hier die Operation angeboten mit der Implementierung von hier.
Das heißt, die Methode von mit der Implementierung von Sparbuch
wird dann genommen. Und die hier oben wird nicht genommen.
Deswegen bezeichnen wir das als Rehdefinieren. Reh als nochmal.
Also wir haben dann hier die oben sozusagen überschrieben.
Wir können diese geerbte Operation, die haben wir redefiniert. Eigentlich würde,
wenn wir unten das nicht hätten, ja mache ich Jahresabschluss,
hätten wir die von oben geerbt, übernommen, ja,
und wir haben die Schnittstelle aber gleich,
die Implementation ist geändert hier durch die rote Farbe gekennzeichnet,
ja, und wir haben einen anderen Inhalt.
Eine andere Implementation für dieselbe Operation. So,
Gibsaldo ist hier auch drin, als geerbt vielleicht oder überschrieben,
je nachdem, was wir damit machen wollen, aber berechnet,
darauf möchte ich noch hinweisen, berechnet Zinse ist zu hinzugekommen.
Wie sieht das im Quelltext aus? Ja, wir haben also
die Klasse Auto mit diesem Macherjahresabschluss, da wird saldo-gebühren berechnet. Ja,
und in der Klasse Sparbuch haben wir auch wieder die Methode,
mache Jahresabschluss und da wird, die werden zunächst die Gebühren abgezogen,
aber es gibt Jahrzehnten beim Sparbuch,
jedenfalls in einer anderen Zeitzeiten als zur Zeit.
Theoretisch gibt es in ein paar Sparungen jedenfalls Zinsen,
hier können wir die Zinsen dazu rechnen.
So, wie sieht das aus beim Aufruf,
beim Aufruf eines Exemplars, arbeiten wir ja mit einem Exemplar,
also wir erzeugen hier mit dem New, ein Exemplar.
Dieses Exemplar wird durch die Referenz variabel ein Sparbuch hier gekennzeichnet und ein Sparbuch mache Jahresabschluss.
Da rufen wir das hier unten auf und nicht das hier oben.
Als Kennzeichen dafür, dass wir hier das überschreiben,
damit haben wir diese Annotation, at overright, wir überschreiben die also.
Ansonsten, wenn wir die nicht hätten,
hier unten wird die gleiche Operation deklariert,
die gleiche Methode und die gleiche Operation,
die hier oben gleiche Schnittstelle,
dann würde das überschrieben,
überschreiben auch passieren
Das war also die beiden Begriffe, das Redefinieren, Überschreiben.
Das hat mir jetzt eben, zusätzlich möchte ich noch darauf hinweisen,
das hatten wir beim letzten Mal besprochen, überladen gibt es auch noch,
dass wir eine zusätzliche Variante haben, zum Beispiel mit anderen Parametern.
Ja, also zum Beispiel, wir können zusätzlich zu dem Konstruktor,
können wir noch einen Konstruktor mit Parametern haben, mit einem Stadtkulturhaben,
zum Beispiel während der Konstruktor, hier ein leeres Konto erzeugt.
Außerdem gibt es noch das Redeklarieren,
das ist in vielen Fällen nicht erwünscht, aber es gibt trotzdem,
dass wir die Signatur der Oberklasse ändern,
dass wir also unter dem gleichen Namen eine andere Methode machen,
eine Schnittstelle ändern.
Soweit dazu und das wird dann der nächste Punkt sein,
im nächsten Video