‫Willkommen zurück zum Polymorphismus-Beispiel und diesem Video. Ich werde einen anderen Ansatz verwenden, bei dem Sie zunächst
‫eine kleine Herausforderung haben.
‫Sie sollten etwas Code schreiben, der Ihnen hilft, die Vererbung ein bisschen weiter oder ein bisschen besser zu verstehen.
‫Und dann werden wir in die Wahlformulare gehen, Teil dieses ganzen Programms werden.
‫Versuchen Sie also bitte, den Code gemäß dieser Herausforderung hier zu schreiben.
‫Also positives Video und ausprobiert.
‫In Ordnung, ich hoffe, Sie haben es versucht, also werde ich eine neue Klasse Ed-Klasse
‫erstellen und sie Auto nennen, und diese Klasse wird nur eine allgemeine Autoklasse sein.
‫Und es kann Eigenschaften enthalten oder sollte es enthalten.
‫Rechts.
‫Wie gesagt, es sollte eine Eigenschaft namens HP Propp haben und eine ganze Zahl sein.
‫Und HP wird die Pferdestärke sein.
‫Wie stark ist dieses Auto?
‫Und dann eine weitere Eigenschaft, die vom Typ string ist und die die Farbe ist.
‫Als nächstes brauche ich einen Konstruktor.
‫Also werde ich ein öffentliches Auto erstellen, das die HP und die Farbe aufnimmt.
‫Und hier habe ich gerade diesen Punkt HP als HP gesagt und sie starten Farbe hat die Farbe.
‫Diese Farbe wird also unsere Eigentumsfarbe sein und die HP wird die HP unserer Klasse oder unser Objekt sein, das
‫vom Typ Auto erstellt wurde.
‫Jetzt sollte die nächste Methode die Detailmethode sein.
‫Also öffentliche Leere zeigen Details.
‫Und hier schreiben wir einfach etwas auf die Konsole.
‫Also s. W. , HP wird plus HP sein.
‫Dann haben wir die Farbe, die so etwas wie die Farbe sein sollte.
‫Also könnte ich natürlich einen anderen Ansatz verwenden, bei dem ich hier die String-Manipulation verwende, aber ich werde es
‫einfach so belassen.
‫Sehr einfach.
‫Das nächste ist also eine öffentliche Leere und heißt Reparatur.
‫Und wir werden diese beiden Methoden später ändern.
‫Also keine Sorgen.
‫Aber vorerst wollte ich sie mit dem Projekt, das wir bisher verwendet haben, sehr
‫einfach halten, um klarer zu machen, was Polymorphismus macht.
‫Und hier wurde gerade das Auto repariert.
‫Gut.
‫Das ist also unser Auto und unsere Basisklasse.
‫Und jetzt brauchen wir die beiden anderen Klassen, das ist unsere BMW-, BMW-Klasse.
‫Und hier haben wir, wie gesagt, eine zusätzliche Eigenschaft namens model, und dies ist ein String-Modell.
‫Ein weiterer Aspekt war nun die Marke, die ein privates Mitglied ist.
‫Also private Saitenmarke, und sie heißt BMW.
‫Als nächstes brauchen wir einen Konstruktor.
‫Also ein öffentlicher BMW.
‫Und bevor ich das mache, um den Konstruktor zu erstellen, möchte ich von Auto erben.
‫Jetzt wird mein BMW vom Auto erben.
‫Und was ich hier brauche, ist die HP,
‫dann die Farbe und das Modell und hier in Tacoma.
‫Was ich also tun kann, ist, dass ich die HP auf den Wert setzen kann. Ich kann sogar mit der Farbe fortfahren, die die
‫Farbe sein wird, und das Modell, das unser Eigentum ist, sollte das Modell sein.
‫Also dieses hier, dort, ich benutze das, weil ich es für dieses Objekt haben möchte und dasselbe kann
‫ich hier und hier tun.
‫Auch wenn ich diese hier nicht erstellt habe, kann ich sie, wie Sie sehen, immer noch verwenden.
‫Nun, hier ist etwas, das Sie noch nicht gesehen haben, nämlich Basis.
‫Ich kann hier also das Schlüsselwort base verwenden und dann einfach sagen, OK, ich möchte die HP und die Farbe meiner Basisklasse
‫verwenden, dann brauche ich diese beiden Zeilen nicht mehr und kann sie sogar loswerden.
‫Wie Sie jetzt sehen können, verschwindet auch der Pfeil.
‫Jetzt haben wir also einen Konstruktor erstellt, der den Basiskonstruktor unserer Basis verwendet, das
‫heißt unserer Basisklasse, die unser Auto ist, nur diesen Konstruktor verwendet und nur das Modell hinzufügt.
‫Jetzt haben wir also einen sehr kurzen Konstrukteur, der die ganze Arbeit für die ganze Arbeit erledigt.
‫Was ich jetzt also als nächstes brauche, ist, wie gesagt, eine Void-Show.
‫Und hier möchte ich nur die Details zeigen und ich werde einfach die Methode von hier oder den Eintrag der
‫Methode kopieren.
‫Und hier wird es zuerst die Marke sein.
‫Also Markenplus.
‫Marke plus HP, also wollte ich nur einige zusätzliche Details zeigen, und hier, wie Sie Details sehen, verwenden
‫Hydes-Mitglieder-Autoshow-Details das neue Schlüsselwort, wenn das Verstecken beabsichtigt war.
‫Und das ist etwas, das wir im nächsten Video behandeln werden.
‫Aber für den Moment erstellen wir auch die Reparaturmethode, die Reparatur öffentlicher Leerstellen.
‫Und hier rein sollte man einfach sowas sagen wie der
‫BMW und hier wurde repariert.
‫Also, was ist diese Null, die ich da habe?
‫Nun, das ist das Modell.
‫Also ich möchte nur das Modell des Autos wissen.
‫Und ich sage nur, sagen wir mal BMW Zevi wie VOR oder und drei oder fünf wurden repariert.
‫Das sollte es also tun.
‫Und jetzt brauche ich noch eine, eine andere Klasse, die ziemlich ähnlich der ist, die wir hier haben.
‫Also werde ich eine neue Klasse erstellen und sie Audy nennen.
‫Und der Einfachheit halber kopiere ich das meiste hier, eigentlich die ganze Klasse, weil es sehr ähnlich
‫sein wird.
‫Der Unterschied ist hier, dass es ein Audi ist und wir als Konstrukteur die Autorität haben und
‫natürlich vom Auto erben muss.
‫Das ist nun also erledigt und jetzt kommt der Polymorphismus-Teil.
‫Wir haben also einen Audi, der vom Typ Auto ist.
‫Wir haben einen BMW, der auch ein Typauto ist, und wir haben diese Basisklasse, die Auto ist.
‫Und jetzt können wir fortfahren und mehrere Objekte davon erstellen.
‫Jetzt wird es viel mehr Sinn machen, sobald wir dort ankommen.
‫Lassen Sie uns also weitermachen und eine neue Variable namens Autos erstellen, die eine neue Liste von Autos sein wird.
‫Und obwohl dies eine Liste von Autos ist, also der Autoklasse, können wir all dies erstellen und BMW ist hier drin.
‫So kann es einfach einen Audi schaffen, der blau ist und ein A4 ist.
‫Dann haben wir einen neuen BMW, der ist, sagen wir, 250 PS, und sagen wir, ist ein rotes Auto und es ist ein Dreier.
‫Das ist also ein Teil des Polymorphismus, dass Sie die Unterklassen anstelle der Basisklasse oder die treibenden Klassen
‫anstelle der Basisklasse verwenden können.
‫Wenn man zum Beispiel mit den Listen oder allgemein und mit allgemein arbeitet, werden Sie sehen, was ich meine.
‫Was ich also tun werde, ist, eine für jede Schleife auszuführen, die alle meine Autos in der Liste
‫meines Autos überprüft und einfach so etwas wie Autoreparatur schreiben oder eine Reparaturmethode aufrufen wird .
‫In Ordnung, also nennen wir das oder lassen Sie uns das ausführen.
‫Aber bevor wir das tun, müssen wir Don read key trösten.
‫Denn sonst wird unser Programm einfach geschlossen.
‫Da sind Sie also.
‫Auto wurde repariert, Auto wurde repariert.
‫So, jetzt heißt es hier die Automethode, welches eben dieses Auto hier repariert wurde.
‫Es nennt also weder diese Reparaturmethode noch diese Reparaturmethode, bei der der BMW repariert
‫wurde oder hier.
‫Es ist das eigentlich hier, für das es bereits Audio sein sollte, obwohl es repariert wurde.
‫Warum heißt es nun die Reparaturmethode unseres Autos und nicht die von BMW?
‫Und der Ton dazu hat mit zwei Dingen zu tun.
‫Eine davon ist also, dass wir diese Voit-Reparatur haben, die keine virtuelle ist.
‫Wenn wir also eine virtuelle Lückenreparatur durchführen, können wir jetzt beispielsweise hier die Reparaturmethode überschreiben, damit wir
‫die Reparaturmethode überschreiben können.
‫Was das bewirkt, ist, wenn wir den Code erneut ausführen.
‫Wir werden sehen, dass das Auto repariert wurde, das ist unsere Audy, die erste, und dann wurde der BMW M3 repariert und das
‫ist die zweite.
‫Und das liegt daran, dass unsere BMW-Klasse hier die Reparaturmethode überschrieben hat, sodass wir diese Methode einfach
‫virtuell nehmen und in den Fahrklassen überschreiben können.
‫Und das haben wir hier getan.
‫Das sind nun die beiden Aspekte des Polymorphismus, also Polymorphismus bei der Arbeit, eins, ein Audi und VW, Porche,
‫jede gewünschte Klasse kann überall dort eingesetzt werden, wo ein Auto erwartet wird.
‫Wenn sie also von dieser Klasse hier, von unserer Autoklasse hier, dieser erben, können wir sie einfach stattdessen
‫verwenden.
‫Und der zweite Aspekt des Polymorphismus besteht darin, dass die virtuelle Methode für jede der Fahrklassen aufgerufen werden
‫kann, nicht für die beste Klasse.
‫Das haben wir mit dem BMW gemacht und jetzt können wir das auch mit unserem Audi hier machen.
‫Also werde ich das auch einfach überschreiben.
‫Stimmenreparatur überschreiben.
‫Lassen Sie es uns jetzt erneut ausführen.
‫Und nun sollen beide ihre Marken und ihre Modelle zeigen.
‫So sehen wir den Audi, einen Vierer und einen BMW und drei wurden repariert.
‫Es gibt jedoch noch eine Sache zum Polymorphismus.
‫Wenn Sie also die besten Klassenmitglieder mit neuen Mitgliedern ausblenden möchten, können Sie das Schlüsselwort new verwenden.
‫Nehmen wir also an, wir haben diese Voit-Show-Details-Methode in unserem Klassenwagen, die einfach eine Leere ist.
‫Es ist keine virtuelle Leere.
‫Und wenn ich das jetzt überschreiben möchte, dann nicht überschreiben in dem Sinne, dass wir hier mit dem Überschreiben
‫gut abgeschnitten haben.
‫Aber ich möchte diese Methode stattdessen immer dann verwenden, wenn ich einen BMW verwende, und zwar nicht im Sinne des
‫Überschreibens der alten, sondern nur ausblenden des Autos und Verwenden von Show-Details.
‫Seitdem kann ich das neue Schlüsselwort verwenden.
‫Also wird es einfach sagen, OK, diese Show-Details haben Vorrang vor dem Auto, Show-Details.
‫Es wird also nicht überschrieben, sondern neu priorisiert.
‫Wie soll ich nun diese detaillierte Methode anzeigen oder verwenden, um die Methode anzuzeigen?
‫Nun, lassen Sie uns einen neuen BMW B und W erstellen, der ein neues BMW-Auto mit zweihundert PS sein
‫wird.
‫Machen wir es schwarz und dann ist es ein Z-3-Modell.
‫Und dann machen wir auch noch einen Audi, einen Audi, einen Dreier.
‫Es wird eine neue Party mit, sagen wir, 100 PS und diese hier ist grün, eine sehr seltsame Farbe für ein
‫Auto.
‫Und dann haben Sie hier ein Dreiermodell.
‫Lassen Sie uns nun die Methode BMW und Details anzeigen hier ausführen.
‫Und das gleiche für den Audi Audi, eine Dreizehenshow, Details.
‫Also lass uns das einfach laufen lassen.
‫Und Sie sehen HP, zweihundert schwarz, HP, einhundert grün.
‫Wie Sie sehen, ruft es die Methode der Autoshow-Details auf und nicht die von BMW.
‫Und das liegt daran, dass wir es als Auto geschaffen haben.
‫Aber es ist ein neuer BMW als Auto.
‫Also, wenn wir jetzt dasselbe machen, machen wir weiter und bauen einen b m w five, der
‫kein Auto sein wird, aber diesmal ist es ein neuer b m w BMW.
‫Und dieser hat, sagen wir, dreihundertdreißig PS.
‫Es ist weiß und es ist ein M fünf.
‫Wenn ich das jetzt V nenne.
‫Willst du und fünf Punkte zeigen Details Methode, es wird mir auch die Marke zeigen, so dass
‫wir Marke BMW, HP 330, Farbe Weiß und die ersten sind.
‫Diese hier mussten also auch die Detailmethode zeigen, aber sie verwenden die des Autos und jetzt verwendet
‫die BMW die von BMW.
‫Auch wenn wir "neues BMW" gesagt haben, verwenden wir immer noch die Autoklasse, um ein Autoobjekt von dem zu erstellen, was
‫ist.
‫Intern ein BMW, aber wir nennen die Methoden des Autos und nicht die BMW-Methoden, nur wenn wir weitermachen
‫und als BMW erschaffen, nennen wir die neue Methode.
‫Dieses neue hier sagt also einfach, OK, wenn Sie ein Objekt von mir erstellen, dann schreiben Sie es als neu.
‫Wenn Sie dies nicht tun, verwenden Sie einfach die Methode der Autos oder der Autoklasse.
‫Die Basisklasse, so ziemlich.
‫Was aber, wenn ich die show details Methode meiner Bassklasse auf mein BMW Objekt aufrufen möchte, dann kann ich folgendes
‫tun.
‫Ich kann ein Auto bauen, das ich Auto B nennen werde, ein BMW, M5, aber es
‫wird ein Auto.
‫Also hier benutze ich Casting, damit ich meinen BMW in ein Auto gieße und jetzt kann ich das Auto benutzen.
‫B, die Details zu meinem BMW M5 zeigen.
‫Oder von meinem Auto, damit wir wieder zu dritt auf 30 Farbe Weiß sind.
‫Das ist also unser BMW, M5 hier.
‫Warum also würden Sie diesen Ansatz überhaupt anwenden, dieses neue Schlüsselwort hier für Ihre Mitglieder zu verstecken und zu verwenden?
‫Nun, Sie würden dies verwenden, wenn Ihr abgeleiteter Member denselben Namen wie ein
‫Member in einer Basisklasse haben soll, Sie aber nicht an einem virtuellen Aufruf teilnehmen möchten.
‫Das ist, wenn Sie dieses neue Schlüsselwort verwenden, das wir hier gesehen haben.
‫Andernfalls können Sie, wenn Sie es überschreiben möchten, einfach diesen Überschreibungsansatz hier verwenden oder einfach das
‫Schlüsselwort in Ihrer Deklaration der Methode überschreiben.
‫Gut.
‫Das ist also schon einiges.
‫Polymorphismus.
‫Im nächsten Video schauen wir uns an, wie wir das verhindern können.
‫Wenn Sie dies nicht möchten, kann eine Methode jemals überschrieben werden.
‫Es gibt eine Möglichkeit, dies in unserer Basisklasse zu tun.
‫Wir sehen uns also im nächsten Video.