Wir hatten beim, bei der Typfahrerbung,
diese Begriffe redefinieren, redeklarieren und so weiter.
Die bleiben uns auch bei der Implementationswerbung nicht erspart. Wir versuchen,
hier Klarheit reinzubringen, indem wir uns das an einem Beispiel anschauen.
Das Beispiel kommt wieder von der Klasse Konto mit der Unterklasse Sparbuch
und als Operation, die wir hier uns anschauen,
nehmen wir die Berechnung des Jahresabschluss.
Wir machen das so, dass die Geerbte Operation in der Unterklasse re
definiert werden soll. Wir können auch dazu sagen, überschreiben,
weil es wird dieselbe Methode verwendet, aber eine andere Imple Implementation dazu.
Also eine andere Methode. Im Quertext sieht das so aus,
dass sie in der Klasse, Konto in der Oberklasse berechnet,
sieht der Buddy die Operation so aus, dass der Saldo-gebühren gerechnet wird.
Das heißt, auf ihrem Konto ist plötzlich weniger,
nämlich um die Menge der Gebühren und in der Unterklasse ist zwar auch diese Berechnung,
diesen Abzug der Gebühren, aber zusätzlich noch Zinsen.
Wir wissen ja, manchmal gibt es Zinsen,
wenn es auch ganz minimal ist.
Aber für uns reicht das aus. So,
dieses erneut Implementieren, das können wir durchaus
von überschreiben sprechen
Und das wird aber dann gültig, wenn wir ein Exemplar dieser Klasse,
in der Klasse Sparbuch haben. Und wenn wir hier von diesem,
zum Beispiel erzeugen wir, ein Objekt davon,
Exemplar der Klassensparbuch, immer wenn wir das aufrufen machen,
Spar, Jahresabschluss, wird die überschriebene Methode redefinierte Methode hier aufrufen.
Wir hatten noch weitere Begriffe, eben das Redeklarieren,
Redefinieren war das, was wir eben gerade gesehen haben,
Redeklarieren, wir ändern die Signaturen damit die Schnittstelle,
aber wir haben jetzt auch noch das Beispiel, des Überladens,
was wir auch noch mal neu beschreiben wollen,
überladen war ja, ich habe die gleiche Bezeichnung,
hier der Konstruktur vom Konto, hier machen wir der Konstrukte von Konto,
aber einmal ohne Parameter und hier mit Parameter.
Das heißt, wir haben mehrere Operationen, gleiche Namen,
aber unterschiedliches, unterschiedliche Parameter. Wie wird diese Methode bestimmt,
wenn wir die aufrufen? Zunächst prüft der Compiler,
und das passiert, werden wir, wenn es übersetzt wird,
denn zu dem Zeitpunkt existieren ja noch keine Exemplare,
deswegen kann man da nicht suchen, aber man kann suchen,
ob es eine Operation mit passenden Namen und passenden Typen gibt.
Und dabei wird die speziellste Operation gewählt, tief unten in der Typ-Hierarchie.
Zur Laufzeit, wenn deine Exemplare gebildet werden will,
werde zugewiesen bekommen, sie machen damit alles Mögliche.
Dann kann man tatsächlich schauen, was für ein Typ hat
denn dieses Exemplar, von welcher Klasse wird es abgeleitet.
Und da können wir in der Hand der Vererbungshierarchie suchen,
wo gibt es diese Operation, die Implementierung dazu.
Wir schauen uns ein Beispiel an, die Oberklasse ist eine Person
Und die Person, die ist normalerweise Nahrung,
aber es gibt spezielle Personen, die brauchen spezielle Nahrung, nämlich Diabetiker.
Sie wissen vielleicht, das hat nicht nur was mit super Krankheit zu tun,
sondern Diabetiker ist jeder, der eine spezielle Nahrung hat.
Und die haben eine spezielle Nahrung, nämlich diabetische Nahrung.
Die diabetische Nahrung ist demzufolge auch abgeleitet, eine Vererbung in den Spezialisierung von Nahrung.
So, und wenn wir jetzt also eine Klasse bilden,
eine Exemplar bilden, was mich von der,
was so von YouTube-Person ist, aber eine Exemplar-Atklasse,
Diabetiker und dann aktiven Methode aufrufen, verzehren.
Dann ist die Frage, kommt das Verzehre von hier oder
von hier? Zunächst zur Übersetzungszeit ist noch nicht klar,
dass hier ein Exemplar von Diabetia genommen wird,
dann nehme ich die speziellste Operation an die statischen Typs.
Und das wäre diese. Und wenn wir dann zur Laufzeit
haben wir tatsächlich hier ein Exemplar schon gebildet und da können wir dann schauen,
welche ist denn das und da tatsächlich ist es hier die Überschriebenen Methode,
die hier enorm wird.
Schauen wir uns das
Für das andere Beispiel an, wenn wir jetzt hier in diabetische Nahrung haben,
dann würde man den Aufruf machen mit der überladenen, über Operation.
So, schauen wir uns das. Ups,
das war ein bisschen weit daran, wenn wir jetzt diese Person haben,
die Wir sind keine überleitende Operation da ist,
mit diabetische Nahrung, sondern wir haben hier oben gleich,
dass wir diabetische Nahrung zugelassen haben und hier unten,
dann wäre das klang der Aussicht in der gleichen Klasse.
Lassen Sie uns dazu kommen, was redefinieren bedeutet und was bedeutet das Schlüsselwort.
Super, das ist gleichzeitig Antwort auf die Frage 3.
Schauen wir mal hier, also wir hatten Frage 3,
fragt uns nach den Operationen, Operatoren, Fils und super.
Es kommt ein bisschen später,
wir schauen uns super mal an, Super bedeutet,
Greife auf die gleich entsprechende Methode der Übung ordneten Klasse,
der von der Klasse, von der ich abgeleitet habe.
So, also die Oberklasse wird dabei aufgerufen.
Und super, super gibt es nicht.
Ich kann damit nur also die direkte Oberklasse erreichen.
Das ist vielleicht noch Hinweis für jemand, der denkt,
ach, super, kann ich ganz nach oben gehen.
Also wir haben jetzt die Möglichkeit,
im Sparbuch auf Methoden,
die Operationen von Konto zuzugreifen
Wir hatten ja im letzten Beispiel das so gemacht,
dass wir zunächst hier, dass diese Zeile auch nochmal hatten,
wenn sie sich vielleicht ein paar vorgehen, mal das zurück nochmal anschauen wollen.
Ja, also das Konto berechnet nur diese Gebührensache und das Sparbuch brechend Gebühren und Zinsen.
Und das könnte man so machen, wie man hier auf die Operation der Oberklasse zugreift. Das wäre durchaus möglich. Diese Aufrufe passieren Dadurch,
dass man, also dadurch ist es möglich,
dass man sich gegenseitig aufrufen kann, ja,
und das wäre möglich, dass eine Unterklasse die Operation 2 redefiniert,
also während der Operation 2 hier nochmal, ja,
und damit können wir,
damit können wir irgendwie diese auch woanders aufrufen,
nämlich die Operation 2 in der Oberklasse,
nehmen wir mal an,
hier in der Oberklasse,
dort die Operation 2 von der Operation 1 aufgerufen und in der Unterklasse,
wer wird denn da aufgerufen
Wird tatsächlich die dann überschriebene Methode aufzurufen. Das ist ein
ganz spezieller Fall. Also das müssen sie sich wirklich merken.
Wir haben dazu am Ende auch gleich noch ein Beispiel,
wie denn das, dass sie da nicht durcheinander kommen.
Ja, also der alte Code ruft neuen Code auf,
wenn wir in der Unterklasse sind.
In der Oberklasse wäre dieser Aufruf,
wenn wir die Operation eins, auch die Methode eins haben,
also hier ist der gleiche Quelltext.
Ich rufe Operation 2 auf, aber mache das in dem Exemplar.
Ich rufe also hier die Rehdefinierte,
die neue Implementierung aus
Wir schauen uns das in ein Beispiel an.
Wir haben hier die Oberklasse Konto, die Unterklasse Sparbuch.
Ich habe hier den Macher im Jahresabschluss, diese Operation rufe
ich hier auf, zum Beispiel beim Truppen eines Jahresberichts.
Und hier unten habe ich das ein bisschen anders gemacht.
In der Klasse Sportbuch habe ich das redefiniert,
aber Tobi-Jahresbericht habe ich nicht verändert. Und dann Gott,
der Jahresabschluss, den ich verändert habe, aufzudürfen.
Dieses Verändern hatten wir ein paar Folgen vorher
schon mal gesehen
Ja, das ist ein wichtiges Beispiel.
Und damit machen wir erstmal einen kleinen Stopp.
Wie weiter geht es mit dir nächsten Eindruck