‫Bienvenue à l'exemple du polymorphisme et à cette vidéo, je vais utiliser une approche différente où vous avez,
‫tout d'abord, un petit défi.
‫Vous devriez écrire du code qui vous aidera à mieux comprendre l'héritage.
‫Et puis nous irons dans les formulaires de vote, ferons partie de tout ce programme.
‫Alors s'il vous plaît allez-y et essayez d'écrire le code selon ce défi ici.
‫Vidéo si positive et essayée.
‫D'accord, j'espère que vous l'avez essayé, alors je vais créer une nouvelle classe de classe Ed
‫et je vais l'appeler voiture, et cette classe sera juste une classe de voiture générale.
‫Et il peut contenir ou il doit contenir des propriétés.
‫Droit.
‫Comme je l'ai dit, il devrait avoir une propriété appelée HP Propp et ce devrait être un entier.
‫Et HP va être la puissance.
‫Alors, quelle est la puissance de cette voiture ?
‫Et puis une autre propriété, qui est de type string et qui est la couleur.
‫Maintenant, ce dont j'ai besoin ensuite, c'est d'avoir un constructeur.
‫Je vais donc créer une voiture publique qui prend en charge les HP et la couleur.
‫Et là je viens de dire ce point HP comme le HP et ils commencent la couleur a la couleur.
‫Donc cette couleur va être notre couleur de propriété et le HP va être le HP de notre classe ou notre objet
‫qui est créé de type voiture.
‫Maintenant, le prochain devrait être la méthode des détails.
‫Donc, les détails du spectacle nul public.
‫Et ici, nous écrivons simplement quelque chose sur la console.
‫Alors S. W. , HP va être plus HP.
‫Ensuite, nous avons la couleur, qui devrait être quelque chose comme la couleur.
‫Alors bien sûr, je pourrais utiliser une approche différente où j'utilise la manipulation de chaînes ici, mais je vais juste le
‫garder comme ça.
‫Très simple.
‫Le suivant est donc un vide public et il s'appelle la réparation.
‫Et nous allons changer ces deux méthodes plus tard.
‫Donc pas de soucis.
‫Mais pour l'instant, je voulais les garder très simples avec le projet que nous avons utilisé
‫jusqu'à présent qui rendra plus clair ce que fait le polymorphisme.
‫Et ici, tout comme la voiture a été réparée.
‫D'accord.
‫C'est donc notre voiture et c'est notre classe de base.
‫Et maintenant, nous avons besoin des deux autres classes, qui est notre BMW, classe BMW.
‫Et ici, comme je l'ai dit, nous avons une propriété supplémentaire appelée model, et c'est un modèle de chaîne.
‫Maintenant, un autre aspect était la marque, qui est un membre privé.
‫Donc marque de ficelle privée, et ça s'appelle BMW.
‫Ensuite, nous avons besoin d'un constructeur.
‫Donc une BMW publique.
‫Et avant de faire cela pour créer le constructeur, je veux hériter de car.
‫Alors maintenant, ma BMW va hériter de la voiture.
‫Et ce dont j'ai besoin ici, c'est du HP,
‫puis de la couleur et du modèle et ici à Tacoma.
‫Donc, ce que je peux faire, c'est que je peux régler le HP sur le fait que je peux même aller de l'avant et faire de même avec la
‫couleur, qui va être la couleur et le modèle qui est notre propriété devrait être le modèle.
‫Donc celui-ci ici, là, je l'utilise parce que je le veux pour cet objet et la même chose que je peux faire
‫ici et que je peux faire ici.
‫Donc, même si je ne les ai pas créés ici, comme vous le voyez, je peux toujours les utiliser.
‫Maintenant, voici quelque chose que vous n'avez pas encore vu, qui est basique.
‫Je peux donc utiliser le mot-clé de base ici, puis je peux simplement dire, OK, je veux utiliser le HP et la couleur de ma classe
‫de base, alors je n'ai plus besoin de ces deux lignes donc je peux même m'en débarrasser.
‫Comme vous pouvez le voir maintenant, la flèche disparaît également.
‫Alors maintenant, nous avons créé un constructeur qui utilise le constructeur de base de notre base, ce qui
‫signifie de notre classe de base, qui est notre voiture, va juste utiliser ce constructeur et il va juste ajouter le modèle.
‫Nous avons donc maintenant un constructeur très court qui fait tout le travail pour tout le travail.
‫Alors maintenant, ce dont j'ai besoin ensuite, c'est d'un void show détails, comme je l'ai dit.
‫Et ici, je veux juste montrer les détails et je vais juste copier la méthode à partir d'ici ou l'entrée de
‫la méthode.
‫Et ici, ce sera la marque en premier.
‫Donc marque plus.
‫Marque plus HP, j'allais donc juste montrer quelques détails supplémentaires, et ici, comme vous voyez les détails, Hydes a hérité des détails du salon
‫de l'automobile des membres utilisant le nouveau mot-clé si la dissimulation était voulue.
‫Et c'est quelque chose que nous allons couvrir dans la prochaine vidéo.
‫Mais pour l'instant, créons également la méthode de réparation, la réparation du vide public.
‫Et ici devrait juste dire quelque chose comme la BMW
‫et ici a été réparé.
‫Alors quel est ce zéro que j'ai là ?
‫Eh bien, c'est le modèle.
‫Donc je veux juste connaître le modèle de la voiture.
‫Et je vais juste dire, disons BMW Zevi comme AVANT ou et trois ou cinq ont été réparés.
‫C'est donc ce que cela devrait faire.
‫Et maintenant j'en ai besoin d'un autre, d'un autre cours, qui est assez similaire à ce que nous avons ici.
‫Je vais donc créer une nouvelle classe et je vais l'appeler Audy.
‫Et pour plus de simplicité, je vais juste copier la plupart des choses ici, en fait toute la classe, parce que ça va
‫être très similaire.
‫Ce qui est différent ici, c'est que c'est une Audi et que nous avons l'autorité en tant que constructeur et bien sûr,
‫elle doit hériter de la voiture.
‫Alors maintenant, c'est fait et maintenant vient la partie polymorphisme.
‫Nous avons donc une Audi, qui est de type voiture.
‫Nous avons une BMW, qui est aussi une voiture de type, et nous avons cette classe de base, qui est une voiture.
‫Et maintenant, nous pouvons aller de l'avant et créer plusieurs objets de cela.
‫Maintenant, cela aura beaucoup plus de sens dès que nous y arriverons.
‫Alors allons-y et créons une nouvelle variable appelée voitures, qui sera une nouvelle liste de voitures.
‫Et même s'il s'agit d'une liste de voitures, donc de la classe des voitures, nous pouvons créer tout cela et BMW est là.
‫Donc, il peut juste créer, disons, une Audi, qui est bleue et qui est une A4.
‫Ensuite, nous avons une nouvelle BMW, qui fait, disons, 250 CV et disons une voiture rouge et c'est une trois.
‫C'est donc une partie du polymorphisme que vous pouvez utiliser les sous-classes au lieu de la classe de base ou les classes de conduite au
‫lieu de la classe de base.
‫On travaille, par exemple, avec les listes ou en général et par général, vous verrez ce que je veux dire.
‫Donc, ce que je vais faire, c'est que je vais exécuter une boucle pour chaque, qui va vérifier toutes mes voitures dans la liste de
‫mes voitures, et ça va juste écrire quelque chose comme réparation de voiture ou ça va appeler une méthode de réparation
‫.
‫Très bien, alors appelons ça ou exécutons ça.
‫Mais avant de faire cela, nous devons consoler Don read key.
‫Parce que sinon, notre programme se fermera tout simplement.
‫Alors voilà.
‫La voiture a été réparée, la voiture a été réparée.
‫Alors maintenant, il appelle la méthode de la voiture ici, qui juste cette voiture ici a été réparée.
‫Donc, cela n'appelle pas cette méthode de réparation et cela n'appelle pas non plus cette méthode de réparation, c'est-à-dire que la BMW
‫a été réparée ou ici.
‫C'est en fait ici qu'il devrait déjà y avoir de l'audio, bien qu'il ait été réparé.
‫Alors maintenant pourquoi appelle-t-il la méthode de réparation de notre voiture et non celle de BMW ?
‫Et l'audio sur cela a à voir avec deux choses.
‫L'un d'eux est que nous avons cette réparation de voiture, qui n'est pas virtuelle.
‫Donc, si nous en faisons une réparation de vide virtuel, ce que nous pouvons maintenant faire, par exemple, ici, nous pouvons le remplacer afin que
‫nous puissions remplacer la méthode de réparation.
‫Ce que cela fera, c'est si nous exécutons à nouveau le code.
‫Nous verrons que la voiture a été réparée, c'est notre Audy, la première, puis la BMW M3 a été réparée et
‫c'est la deuxième.
‫Et c'est parce que notre classe BMW ici a remplacé la méthode de réparation afin que nous puissions simplement prendre cette méthode, la rendre virtuelle,
‫et cela nous permet de la remplacer dans les classes de conduite.
‫Et c'est ce que nous avons fait ici.
‫Alors maintenant, ce sont les deux aspects du polymorphisme, donc le polymorphisme à l'œuvre, l'un, une Audi et VW, Porche, quelles que soient les
‫différentes classes que vous souhaitez avoir, toutes peuvent être utilisées partout où une voiture est attendue.
‫Donc, chaque fois qu'ils héritent de cette classe ici, de notre classe de voiture ici, celle-ci, nous pouvons simplement l'utiliser à la
‫place.
‫Et puis le deuxième aspect du polymorphisme est que la méthode virtuelle peut être invoquée sur chacune des classes de
‫conduite, pas sur la meilleure classe.
‫C'est donc quelque chose que nous avons fait avec la BMW et maintenant nous pouvons faire la même chose avec notre Audi ici.
‫Je vais donc en faire une dérogation également.
‫Ignorer la réparation du vote.
‫Maintenant, exécutons-le à nouveau.
‫Et maintenant, les deux devraient montrer leurs marques et leurs modèles.
‫Nous voyons donc l'Audi, un quatre et BMW et trois ont été réparés.
‫Il y a encore une chose à propos du polymorphisme, cependant.
‫Donc, si vous souhaitez masquer les meilleurs membres de la classe avec les nouveaux membres, vous pouvez utiliser le nouveau mot-clé.
‫Supposons donc que nous ayons cette méthode d'affichage des détails Voit dans notre voiture de classe, ce qui n'est qu'un vide.
‫Ce n'est pas un vide virtuel.
‫Et maintenant, si je souhaite annuler cela, alors n'oubliez pas dans le sens où nous avons bien fait ici
‫avec l'annulation.
‫Mais je veux en fait utiliser cette méthode à la place chaque fois que j'utilise une BMW et non dans le sens de remplacer l'ancienne,
‫mais simplement de cacher celle de la voiture et d'utiliser les détails de l'exposition.
‫Depuis lors, je peux utiliser le nouveau mot-clé.
‫Donc ça suffira, c'est simplement dire, OK, ce show details a la priorité sur la voiture, show details.
‫Il ne s'agit donc pas de l'écraser, mais de lui redonner la priorité.
‫Alors maintenant, comment dois-je afficher cette méthode d'affichage détaillée ou utiliser pour afficher la méthode ?
‫Eh bien, créons une nouvelle BMW B et W que trois, qui sera une nouvelle voiture BMW de deux cents
‫chevaux.
‫Faisons-en noir et puis c'est un modèle Z trois.
‫Et puis créons aussi une Audi, Audi, un trois.
‫Ça va être une nouvelle fête avec, disons, 100 chevaux et celui-ci est vert, couleur très bizarre pour une
‫voiture.
‫Et puis vous avez un modèle à trois ici.
‫Exécutons maintenant la méthode BMW et affichons les détails ici.
‫Et pareil pour l'Audi Audi, un spectacle à trois doigts, détails.
‫Alors, exécutons simplement cela.
‫Et vous voyez HP, deux cents couleurs noires, HP, cent couleurs vertes.
‫Donc, comme vous le voyez, il appelle la méthode des détails du salon de l'automobile et non celle de BMW.
‫Et c'est parce que nous l'avons créé comme une voiture.
‫Mais c'est une nouvelle BMW en tant que voiture.
‫Donc, si nous faisons la même chose maintenant, allons de l'avant et créons un b m w five, qui
‫ne sera pas une voiture, mais cette fois c'est un b m w nouvelle BMW.
‫Et celui-ci, disons, a trois cent trente chevaux.
‫C'est blanc et c'est un M cinq.
‫Alors maintenant, si j'appelle ça V.
‫Voulez-vous et cinq points afficher la méthode des détails, cela me montrera également la marque afin que nous
‫soyons la marque BMW, HP 330, couleur blanche et les premières.
‫Donc ceux-là ici, ils devaient aussi montrer la méthode des détails, mais ils utilisent celui de la voiture et maintenant
‫celui de BMW utilise celui de BMW.
‫Ainsi, même si nous avons dit nouvelle BMW, nous utilisons toujours la classe voiture afin de créer un objet voiture de ce qui
‫est.
‫En interne, une BMW, mais nous appelons les méthodes de la voiture et non les méthodes BMW, seulement si nous allons de l'avant
‫et créons en tant que BMW, nous appelons la nouvelle méthode.
‫Donc, ce nouveau ici dit simplement, OK, si vous créez un objet de moi, alors allez-y et écrivez-le comme nouveau.
‫Si vous ne le faites pas, allez-y et utilisez simplement la méthode des voitures ou de la classe de voitures.
‫La classe de base, à peu près.
‫Mais que se passe-t-il si je veux appeler la méthode show details de ma classe de basse sur mon objet BMW, alors je peux faire ce
‫qui suit.
‫Je peux aller de l'avant et créer une voiture, que je vais appeler la voiture B, ce sera une BMW, M5, mais
‫ce sera une voiture.
‫Donc ici, j'utilise le casting pour que je lance ma BMW dans une voiture et maintenant je peux aller de l'avant et utiliser la voiture.
‫B qui montrent les détails de ma BMW M5.
‫Ou de ma voiture, pour que nous soyons encore une fois trois sur 30 de couleur blanche.
‫C'est donc notre BMW, M5 ici.
‫Alors pourquoi utiliseriez-vous même cette approche consistant à cacher et à utiliser ce nouveau mot-clé ici sur vos membres ?
‫Eh bien, vous l'utiliseriez si vous voulez que votre membre dérivé ait le même nom qu'un
‫membre dans une classe de base, mais que vous ne voulez pas participer à une invocation virtuelle.
‫C'est à ce moment-là que vous utilisez ce nouveau mot-clé que nous avons vu ici.
‫Sinon, si vous souhaitez le remplacer, vous pouvez simplement utiliser cette approche de remplacement ici ou simplement remplacer
‫le mot clé dans votre déclaration de la méthode.
‫D'accord.
‫C'est donc quelque chose.
‫Polymorphisme.
‫Dans la prochaine vidéo, nous allons voir comment nous pouvons empêcher cela.
‫Donc, si vous ne le souhaitez pas, une méthode peut être surchargée.
‫Il existe un moyen de le faire dans notre classe de base.
‫Alors rendez-vous dans la prochaine vidéo.