‫Im letzten Video haben Sie etwas über Vererbung und die Grundlagen der Vererbung gelernt, aber
‫jetzt tauchen wir etwas tiefer ein und schauen uns einige Schlüsselwörter an, die für die Vererbung relevant sein werden.
‫Und die, die wir uns ansehen werden, sind virtuell und das Schlüsselwort override.
‫Jetzt fragen Sie sich vielleicht, warum wir Tiere hier auf dem Bildschirm haben?
‫Warum werden hier viele Tierbilder angezeigt?
‫Nun, die Sache ist die, wir werden eine Tierklasse implementieren, die es uns dann ermöglicht, von einem Tier
‫zu erben. Es wird die Elternklasse sein, die ein paar Fähigkeiten hat, z. B. was kann ein Tier tun?
‫Es kann ein Geräusch machen, es kann essen und es kann spielen.
‫Das ist zumindest das, was wir der Tierklasse erlauben werden.
‫Und natürlich kann ein Tier noch viel mehr.
‫Wir geben ihm ein paar Eigenschaften, wie den Namen The Age-Eigenschaft, dann zum Beispiel, wenn es hungrig ist.
‫Also nur, wenn es hungrig ist, frisst es, sonst frisst es nicht.
‫Das ist also wirklich die Idee, eine Tierklasse zu erstellen.
‫Und jetzt können Sie diese Klasse natürlich auch schon selbst durchführen.
‫Und dann verwenden wir die Vererbung, um nicht nur die gleichen Methoden und Eigenschaften zu verwenden, sondern sie
‫auch zu überschreiben, indem wir im Grunde sagen: OK, das Geräusch, das ein Tier, das ein Hund ist, macht, wird sich von dem Geräusch unterscheiden
‫die zum Beispiel ein Affe macht oder ein Affe macht oder eine Giraffe macht oder so
‫ähnlich.
‫OK, das ist also im Grunde das, was wir implementieren werden.
‫Auf diese Weise lernen wir die verschiedenen Schlüsselwörter wie virtual und das override-Schlüsselwort kennen.
‫Also gehen wir raus und erstellen ein neues Projekt dafür.
‫Ich werde eine Konsolenanwendung verwenden.
‫Ich werde es als virtuelle Override-Demo bezeichnen.
‫Gut.
‫Als kleine Herausforderung für Sie, wenn Sie dies selbst ausprobieren möchten, schreiben Sie bitte
‫eine Klasse, die Tier heißt und die Eigenschaften hat Alter ist hungrig.
‫Dann natürlich ein Konstruktor, dann heißt eine Methode make sounds, eat sowie play.
‫OK, also implementieren Sie möglicherweise alle diese Methoden, wenn Sie möchten, denn dies gibt Ihnen nur ein
‫wenig Übung, um all diese verschiedenen Methoden zu erstellen.
‫Und dann werden wir sehen, wie wir sie ein wenig ändern können, damit wir sie bei der Vererbung richtig verwenden können.
‫In Ordnung, ich hoffe, Sie haben es versucht, daher können wir natürlich mit kontrolliertem Casey eine neue Klasse erstellen
‫und ich werde diese ein Tier nennen.
‫So und jetzt wird diese Tierklasse, wie gesagt, ein paar Eigenschaften haben,
‫also die name-Eigenschaft, die Eigenschaft sowie die His-Hunger-Eigenschaft, und dann einen einfachen Konstruktor, der alle diese Eigenschaften
‫verwendet verwende nur GetSet.
‫Übrigens, wenn Sie ganz schnell eine Eigenschaft erstellen möchten, geben Sie einfach prop double tap ein und geben Sie dann den Typ
‫ein, z. B. Zeichenfolge und dann hier z. B. Name.
‫So würden Sie es sehr schnell machen, ohne mehr als nötig eingeben zu müssen.
‫Gut.
‫Dies wird also unser Konstrukteur hier mit dem Namen The Age sein und das ist hungrig und Sie können
‫sehen, hungrig ist nicht etwas, das wir dem Tier zuordnen werden, sobald wir es erschaffen haben, aber
‫wir werden es so einstellen standardmäßig am Anfang zeichnen.
‫Also setze ich es einfach auf seine hungrige Standardeinstellung.
‫OK, jetzt habe ich gesagt, dass ich eine Methode haben möchte, die sich Sounds machen nennt.
‫Schauen wir uns also diese Methode an.
‫Also verwende ich eine leere virtuelle Methode, um Sound für andere Klassen zum Überschreiben zu machen.
‫Ich mache diese Methode virtuell, damit sie von Klassen überschrieben werden kann, die von animal erben.
‫Und wir werden später sehen, wie das geht, denn das Geräusch, das ein Tier macht, hängt stark
‫vom Tier selbst ab.
‫Hunger zu haben ist also etwas, das jedes Tier teilt, denn so funktionieren wir.
‫Wir brauchen Energie und die bekommen wir über die Nahrung.
‫Und um uns zu motivieren, Nahrung zu besorgen oder zu essen, haben wir das Hungergefühl.
‫Aber diese virtuelle Methode, die wir hier haben, macht Geräusche, die nicht leer sein müssen.
‫Schauen wir uns also diese Essmethode hier an.
‫Und diese Essmethode wird auch eine virtuelle Methode sein.
‫Dadurch können unsere Unterklassen diese Methode überschreiben.
‫Wenn wir die Methode also überschreiben möchten, können wir dies tun, müssen es aber nicht.
‫Die allgemeine Funktionalität ist die, die Sie hier sehen können.
‫So wird überprüft, ob das Tier hungrig ist.
‫Wenn dies der Fall ist, druckt es nur den Namen aus und sagt, dass es frisst, und wenn es keinen Hunger hat, wird es
‫sagen, dass der Name nicht hungrig ist.
‫Der Name ist übrigens Eigentum unseres Tieres.
‫Also diese Namenseigenschaft des Tieres.
‫OK, das wird also unsere Essmethode sein und wir werden sie auch virtuell machen.
‫Und dann eine andere virtuelle Methode, die das Spielen sein wird.
‫OK, also diese virtuelle Methode, die im Grunde sagt, dass der Name auf der Konsole abgespielt wird.
‫Jetzt verwenden wir einige sehr einfache rechte Zeilenanweisungen, dies könnte natürlich viel komplexer sein.
‫Okay, das Ganze also nur, um das Ganze zu vereinfachen und sozusagen menschlich verständlicher zu machen, denn spielen
‫und essen und so, das ist etwas, das wir direkt verstehen können, weil wir es
‫in unserem Leben gesehen und getan haben uns, sowie das Auslesen von Daten aus einer Datenbank oder
‫ähnlichem.
‫Das ist nicht etwas, was wir normalerweise im wirklichen Leben sehen.
‫Okay.
‫Gut.
‫Lassen Sie uns nun unsere Klassen definieren, die von animal abgeleitet werden, damit sie von der animal-Klasse erben.
‫Lassen Sie uns also weitermachen und Control K verwenden und unsere gemeinsame Währung sehen.
‫Und dies öffnet dann den Bildschirm, auf dem wir dann eine Klasse erstellen oder alternativ einfach eine Klasse
‫erstellen können.
‫Andernfalls werde ich eine Hundeklasse erstellen und diese Klasse wird so von Tier erben.
‫Jetzt können Sie bereits sehen, dass kein Argument angegeben ist, das dem erforderlichen formalen
‫Parameternamen der Tiernamenszeichenfolge entspricht.
‫Also müssen wir hier einen Konstruktor erstellen.
‫Lassen Sie uns also weitermachen und einen einfachen Konstruktor erstellen, der der gleichen Struktur folgt.
‫Es wird den Namen und das Alter haben und es wird einen gut verwendeten Basisnamen haben, so dass wir denselben Konstruktor verwenden können, den wir für
‫dieses Tier definiert haben.
‫Also werde ich jetzt diese neue Eigenschaft namens Abie oder ist glücklich verwenden und dies wird ein boolescher Wert sein.
‫Dies wird im Grunde nur dann gespeichert, wenn das Tier in diesem Fall den Hund glücklich macht.
‫Es wird also wahr sagen, wenn der Hund glücklich ist und Hunde glückliche Tiere sind.
‫Standardmäßig wird der Hund glücklich sein.
‫Gut.
‫Lassen Sie uns nun die ITW-Methode überschreiben.
‫OK, also überschreiben wir einfach die virtuelle Methode, eat, und verwenden daher dieses override-Schlüsselwort.
‫OK, also öffentliches Gut, wie eine normale Methode, aber wir fügen diese Überschreibungstastatur hinzu.
‫Überschreiben Sie also void ITW gleich zwei oder ähnlich wie hier, wo wir auch diese Methode hatten.
‫Aber hier haben wir eine virtuelle Tastatur verwendet.
‫Diese virtuelle Tastatur ermöglicht es unseren Unterklassen, unseren erbenden Klassen der Kinder, das Überschreibungswort zu verwenden, um
‫die Funktionalität grundsätzlich außer Kraft zu setzen.
‫Wenn Sie immer noch die Basisfunktionalität der Elternklasse der Tierklasse aufrufen möchten, müssen wir in
‫diesem Fall basierend DOT eat OK verwenden, base sagt OK, nennt die Methode der Basis und die Basis wird gut sein, sehen
‫Sie hier Tier.
‫Sobald Sie also auf die Basis doppelklicken und sie hervorgehoben ist, können Sie sehen, dass auch Tier hervorgehoben wird,
‫da Tier Ihre Basisklasse ist.
‫Wenn Sie die STRG-Taste HELT gedrückt halten und auf die Basis klicken, wird zur Tierklasse gesprungen, da dies
‫die Basisklasse ist.
‫Und Sie konnten sehen, dass es drei Referenzen unserer Basisklasse gibt, und zwar hier, diese Basis sowie
‫diese Basis und dieses Tier hier oben.
‫OK, an dieser Stelle verwenden wir hier im Wesentlichen unsere Basisklasse, die Basisklassenfunktionalität.
‫Wir überschreiben nichts.
‫Im Grunde sagen wir also, dass ein Hund genauso ist wie jedes andere Tier.
‫Also nichts besonderes hier.
‫Schauen wir uns nun die Methode „Sound machen“ an, denn diese wird ganz anders sein, weil
‫der Hund die Geräusche richtig machen muss und seine Art, Geräusche zu machen, wuff.
‫Es könnte auch woof oder wer für was auch immer sein.
‫Ihr Hund macht jedoch gerne Geräusche.
‫Und so wird der Hund in meinem Fall ein Geräusch machen.
‫Das wird also bei jedem Tier anders sein.
‫OK, also wird jedes Tier einen Unterschied machen.
‫Und deshalb überschreiben wir unseren Make-Sound.
‫Nun, mit gut, das mag klingen, was wir hier hatten, wir überschreiben es mit unserer individuellen Umsetzung für
‫unseren Hund.
‫Und jetzt machen wir dasselbe mit dem Spielen, denn der Hund will nur spielen, wenn er glücklich ist, also nehmen wir an, dass
‫dies der Fall ist.
‫Wenn wir uns also das Spiel ansehen, heißt es hier, dass der Hund spielt, aber ich bin mit diesem Ergebnis nicht zufrieden.
‫Nehmen wir an, ein Hund spielt nur, wenn er ein glücklicher Hund ist.
‫Was wir also tun können, ist, das Wortspiel außer Kraft zu setzen und zu überprüfen, ob der Hund glücklich ist, und erst dann spielen.
‫Wir haben also bereits die Basistierfunktionalität mit der Funktionalität überschrieben.
‫Nun, mit unserer eigenen Funktionalität für den Hund oder unserer einzigartigen Funktionalität für den Hund, bei der wir eine Bedingung
‫hinzugefügt haben.
‫Aber das kann alles sein.
‫Sie sind nicht auf eine Bedingung beschränkt.
‫Dies könnte eine ganz andere Art der Implementierung sein.
‫Sie brauchen nicht einmal das Basisspiel zu verwenden, also können Sie völlig frei verwenden, was Sie wollen.
‫In der make sound-Methode können Sie beispielsweise sehen, dass wir die Basis make sound nicht verwenden, da
‫in der make sound-Methode nichts aufgerufen werden kann.
‫Hier ist also nichts Interessantes.
‫Aber selbst wenn, dann müssen wir weder Base Make-Out noch Base Play callen.
‫Wir könnten hier etwas ganz anderes implementieren, wenn wir wollen.
‫OK, das wird also unser Hund sein.
‫Lassen Sie uns nun diese beiden Klassen speichern und mit ihnen in unserer Programm-CSS-Datei arbeiten.
‫OK, also hier ist zunächst einmal, einen Hund zu erstellen, so werde ich den Hund nennen, der ein neuer
‫Hund sein wird.
‫Die wird den Namen Siff haben und der Hund wird 50 Jahre alt, also hübscher alter Hund und jetzt.
‫Wir können etwas schreiben wie, damit wir auf das Eigentum des Hundes zugreifen können, wie so rote Linie,
‫Hundename, damit wir den Namen des Hundes und das Alter des Hundes mit Hund, Hundename und Hundepunkt h erhalten können.
‫Und dann können wir zum Beispiel spielen und essen.
‫Okay, machen wir das ganz schnell, Hundespiel, Hundefutter.
‫Lassen Sie uns das also ausführen.
‫Und wir konnten Städter sehen, 15 Jahre alt, Surfer spielen, Surfer essen.
‫OK, also spielen und es hat total gut funktioniert.
‫Selbstverständlich können wir auch Doktoren verwenden.
‫Und Geräusche machen.
‫Das würde dann den Hund klingen lassen.
‫Lassen Sie uns das ausführen.
‫Und Sie sehen, die Aktie sagt Box.
‫Gut.
‫Lassen Sie uns also kurz zusammenfassen und sehen, wie sich dies von dem Beispiel im letzten
‫Video unterscheidet, also haben wir unsere Basisklasse und ihre Basisklasse hat ein paar Eigenschaften und sie hat auch ein paar
‫Methoden von Funktionen, also sprechen.
‫Also hier, um zum Beispiel die AED-Methode und so weiter zu klingen, und wir machen
‫sie virtuell, indem wir das virtuelle Schlüsselwort hinzufügen, um sie in der vererbenden Klasse änderbar oder übererregbar zu machen.
‫Dogs enterbt also eine Klasse oder eine Unterklasse, und diese Unterklasse ermöglicht es uns jetzt, eine bestimmte Methode der
‫Basisklasse mit dem Schlüsselwort override zu überschreiben.
‫Also das wird jetzt.
‫Überschreiben Sie die Funktionalität, damit sie die Funktionalität oder den Code der aktuellen Methode ersetzt, außer Sie verwenden
‫natürlich das jeweils vorhandene Leerzeichen.
‫Was also tun wird, ist, dass es im Grunde nur die Methode eat der Basisklasse aufruft, d. h. des
‫Elternteils.
‫Es steht Ihnen jedoch frei, hier Ihren ganz eigenen Code zu implementieren.
‫Sie müssen die Basisklasse nicht aufrufen.
‫Sie können natürlich eine Bedingung hinzufügen, damit die Basisklassenfunktionalität in einer bestimmten Bedingung aufgerufen
‫wird.
‫Oder Sie können einen beliebigen Code in Ihre Überschreibungsmethoden schreiben, und dann ist etwas anderes
‫anders.
‫Und das heißt, wir fügen unserem Konstruktor hier Code für unsere hinzu.
‫Unterklausel, OK, also dieser erbliche Klassenhund.
‫Verwendet man einerseits die gleichen Eigenschaften wie unsere Basisklasse, hat sie aber gleichzeitig eine eigene Implementierung,
‫was sollte passieren, wenn ein Hund erstellt wurde?
‫Sobald also ein Hundeobjekt erstellt ist, heißt es in unserem Fall nur, dass der Hund glücklich sein wird.
‫Alles klar, das war's für dieses Video, wir werden uns natürlich viel mehr mit Vererbung befassen, denn es
‫gibt noch viel zu lernen.
‫Wir sehen uns also im nächsten Video.