‫Welkom terug bij het voorbeeld van polymorfisme en in deze video ga ik een andere benadering gebruiken waarbij je
‫allereerst een kleine uitdaging hebt.
‫Je zou wat code moeten schrijven die je zal helpen om overerving een beetje verder of een beetje beter te begrijpen.
‫En dan gaan we in op de stemformulieren, maken deel uit van dit hele programma.
‫Dus ga alsjeblieft je gang en probeer de code te schrijven volgens deze uitdaging hier.
‫Dus positieve video en geprobeerd.
‫Oké, ik hoop dat je het geprobeerd hebt, dus ik ga een nieuwe klasse Ed creëren
‫en ik ga het auto noemen, en deze klasse wordt gewoon een algemene autoklasse.
‫En het kan eigenschappen bevatten of het zou moeten bevatten.
‫Rechts.
‫Zoals ik al zei, zou het een eigenschap moeten hebben met de naam HP Propp en het zou een geheel getal moeten zijn.
‫En HP wordt de pk's.
‫Dus hoe krachtig is deze auto?
‫En dan nog een eigenschap, die van het type string is en wat de kleur is.
‫Wat ik nu nodig heb, is een constructor.
‫Dus ik ga een openbare auto maken die de HP en de kleur opneemt.
‫En hier zei ik net deze stip HP als de HP en ze beginnen kleur heeft de kleur.
‫Dus deze kleur wordt onze eigendomskleur en de HP wordt de HP van onze klasse of ons object dat is
‫gemaakt van het type auto.
‫Nu zou de volgende de details-methode moeten zijn.
‫Dus public void toon details.
‫En hier schrijven we gewoon iets op de console.
‫Dus s. W. , HP wordt plus HP.
‫Dan hebben we de kleur, die zoiets als de kleur zou moeten zijn.
‫Dus ik zou natuurlijk een andere benadering kunnen gebruiken waarbij ik stringmanipulatie hier gebruik, maar ik ga het
‫gewoon zo houden.
‫Erg makkelijk.
‫Dus de volgende is een openbare leegte en het heet de reparatie.
‫En we gaan die twee methoden later veranderen.
‫Geen zorgen dus.
‫Maar voor nu wilde ik ze heel eenvoudig houden met het project dat we tot nu
‫toe hebben gebruikt, dat het duidelijker zal maken wat polymorfisme doet.
‫En hier, net zoals de auto werd gerepareerd.
‫Oke.
‫Dus dat is onze auto en het is onze basisklasse.
‫En nu hebben we de twee andere klassen nodig, onze BMW, BMW-klasse.
‫En hier hebben we, zoals ik al zei, een extra eigenschap genaamd model, en dit is een stringmodel.
‫Een ander aspect was het merk, dat een privélid is.
‫Dus een eigen stringmerk, en het heet BMW.
‫Nu hebben we een constructor nodig.
‫Een openbare BMW dus.
‫En voordat ik dat doe voor een create the constructor, wil ik erven van de auto.
‫Dus nu gaat mijn BMW erven van de auto.
‫En wat ik hier nodig heb is de HP,
‫dan de kleur en het model en hier in Tacoma.
‫Dus wat ik kan doen, is dat ik de HP zo kan instellen dat ik zelfs door kan gaan en hetzelfde kan doen met de kleur, die
‫de kleur zal zijn en het model dat ons eigendom is, het model zou moeten zijn.
‫Dus deze hier, daar, ik gebruik dit omdat ik het voor dit object wil en hetzelfde kan
‫ik hier en hier doen.
‫Dus ook al heb ik die hier niet gemaakt, zoals je ziet, ik kan ze nog steeds gebruiken.
‫Nu, hier is iets dat je nog niet hebt gezien, wat basis is.
‫Dus ik kan hier het basissleutelwoord gebruiken en dan kan ik gewoon zeggen, OK, ik wil de HP en de kleur van mijn basisklasse
‫gebruiken, dan heb ik die twee regels niet meer nodig, dus ik kan die zelfs wegwerken.
‫Zoals je nu kunt zien, verdwijnt ook de pijl.
‫Dus nu hebben we een constructor gemaakt die de basisconstructor van onze basis gebruikt,
‫wat betekent dat onze basisklasse, onze auto, deze constructor gaat gebruiken en het model gaat toevoegen.
‫Dus nu hebben we een zeer korte constructor die al het werk voor het hele werk doet.
‫Dus wat ik nu nodig heb, is een nietige showdetails, zoals ik al zei.
‫En hier wil ik alleen de details laten zien en ik ga gewoon de methode van hier of de invoer van de
‫methode kopiëren.
‫En hier zal het merk eerst zijn.
‫Merkplus dus.
‫Merk plus HP, dus ik wilde net wat extra details laten zien, en hier, zoals je details ziet, gebruiken Hydes
‫overgeërfde autoshowdetails het nieuwe trefwoord als verbergen de bedoeling was.
‫En dat is iets dat we in de volgende video gaan behandelen.
‫Maar laten we voor nu ook de reparatiemethode creëren, public void repair.
‫En hier zou gewoon iets moeten zeggen als de BMW
‫en hier werd gerepareerd.
‫Dus wat is deze nul die ik daar heb?
‫Nou, dat is het model.
‫Dus ik wil gewoon het model van de auto weten.
‫En ik ga gewoon zeggen, laten we zeggen BMW Zevi als EFORE of en drie of vijf werd gerepareerd.
‫Dus dat is wat dit zou moeten doen.
‫En nu heb ik er nog een nodig, een andere klas, die behoorlijk lijkt op wat we hier hebben.
‫Dus ik ga een nieuwe klas maken en ik ga het Audy noemen.
‫En voor de eenvoud ga ik de meeste dingen hier kopiëren, eigenlijk de hele klas, omdat het erg op
‫elkaar zal lijken.
‫Wat anders is, is dat het een Audi is en dat wij als constructeur de autoriteit hebben en dat hij
‫natuurlijk van de auto moet erven.
‫Dus nu is dat gedaan en nu komt het polymorfisme-gedeelte.
‫We hebben dus een Audi, die van het type auto is.
‫We hebben een BMW, die ook een type auto is, en we hebben deze basisklasse, dat is auto.
‫En nu kunnen we doorgaan en meerdere objecten daarvan maken.
‫Nu, het zal veel logischer zijn zodra we daar zijn.
‫Dus laten we doorgaan en een nieuwe variabele maken met de naam auto's, wat een nieuwe lijst met auto's wordt.
‫En ook al is dit een lijst met auto's, dus van de autoklasse, we kunnen dit allemaal maken en BMW is hier.
‫Dus het kan gewoon, laten we zeggen, een Audi creëren, die blauw is en een A4 is.
‫Dan hebben we een nieuwe BMW, dat is, laten we zeggen, 250 pk en laten we zeggen is een rode auto en het is een drie.
‫Dus dat is een onderdeel van polymorfisme dat je de subklassen kunt gebruiken in plaats van de basisklasse of de rijklassen
‫in plaats van de basisklasse.
‫Een die bijvoorbeeld met de lijsten werkt of in het algemeen en in het algemeen, u begrijpt wat ik bedoel.
‫Dus wat ik ga doen, is dat ik een voor elke lus ga uitvoeren, die al mijn auto's in de lijst van
‫mijn auto gaat controleren, en het gaat gewoon iets schrijven als autoreparatie of het gaat een reparatiemethode aanroepen .
‫Oké, dus laten we dat noemen of laten we dat uitvoeren.
‫Maar voordat we dat doen, moeten we Don leessleutel troosten.
‫Want anders gaat ons programma gewoon dicht.
‫Dus daar ben je.
‫Auto is gerepareerd, auto is gerepareerd.
‫Dus nu wordt hier de auto-methode aangeroepen, waarbij deze auto hier gerepareerd is.
‫Dus het noemt deze reparatiemethode niet en ook niet deze reparatiemethode, of de BMW werd
‫gerepareerd of hier.
‫Het is eigenlijk hier waar het al audio voor zou moeten zijn, hoewel het is gerepareerd.
‫Dus waarom noemt het nu de reparatiemethode van onze auto en niet die van BMW?
‫En de audio daarop heeft met twee dingen te maken.
‫Dus een daarvan is dat we deze voit-reparatie hebben, die niet virtueel is.
‫Dus als we het virtuele reparatie van lege plekken maken, kunnen we nu bijvoorbeeld hier het opheffen, zodat
‫we de reparatiemethode kunnen negeren.
‫Wat dat zal doen, is als we de code opnieuw uitvoeren.
‫We zullen zien dat de auto is gerepareerd, dat is onze Audy, de eerste, en dan is de BMW M3 gerepareerd en dat
‫is de tweede.
‫En dat komt omdat onze BMW-klasse hier de reparatiemethode heeft overschreven, dus we kunnen deze methode gewoon nemen, virtueel maken, en dat
‫stelt ons in staat om het in de rijklassen te negeren.
‫En dat is wat we hier hebben gedaan.
‫Dus dat zijn nu de twee aspecten van polymorfisme, dus polymorfisme op het werk, één, een Audi en VW, Porche, welke verschillende
‫klassen je ook wilt hebben, ze kunnen allemaal worden gebruikt waar een auto wordt verwacht.
‫Dus wanneer ze erven van deze klasse hier, van onze autoklasse hier, deze, kunnen we het gewoon
‫gebruiken.
‫En dan is het tweede aspect van polymorfisme dat de virtuele methode kan worden ingeroepen op elk van de
‫rijklassen, niet op de beste klasse.
‫Dus dat is iets dat we met de BMW hebben gedaan en nu kunnen we hetzelfde doen met onze Audi hier.
‫Dus ik ga er ook maar een override van maken.
‫Stemreparatie overschrijven.
‫Laten we het nu opnieuw uitvoeren.
‫En nu zouden beide hun merken en hun modellen moeten laten zien.
‫Zo zien we dat de Audi, een vier en drie BMW zijn gerepareerd.
‫Er is echter nog iets met polymorfisme.
‫Dus als je de beste klasleden met nieuwe leden wilt verbergen, kun je het nieuwe trefwoord gebruiken.
‫Dus laten we zeggen dat we deze methode voor het tonen van details in onze klasseauto hebben, wat slechts een leegte is.
‫Het is geen virtuele leegte.
‫En als ik dat nu zou willen overschrijven, dus niet overschrijven in de zin dat we het hier goed hebben gedaan
‫met de override.
‫Maar ik wil deze methode eigenlijk gebruiken wanneer ik een BMW gebruik en niet in de zin van het negeren van
‫de oude, maar gewoon die van de auto verbergen en showdetails gebruiken.
‫Sindsdien kan ik het nieuwe trefwoord gebruiken.
‫Dus dat is voldoende, het zal gewoon zeggen, OK, deze showdetails hebben voorrang op de auto, showdetails.
‫Dus het overschrijft het niet, maar het herprioriteert het.
‫Dus hoe moet ik nu deze gedetailleerde methode tonen of gebruiken om de methode te tonen?
‫Nou, laten we een nieuwe BMW B en W maken die drie, dat wordt een nieuwe BMW-auto met tweehonderd
‫pk.
‫Laten we het zwart maken en dan is het een Z drie model.
‫En laten we dan ook nog een Audi maken, Audi, een drie.
‫Het wordt een nieuw feestje met pakweg 100 pk en deze is groen, hele rare kleur voor een
‫auto.
‫En dan heb je hier een drie-model.
‫Laten we nu de BMW uitvoeren en de details hier weergeven.
‫En hetzelfde voor de Audi Audi, een show met drie tenen, details.
‫Dus laten we dat gewoon uitvoeren.
‫En je ziet HP, tweehonderd kleuren zwart, HP, honderd kleuren groen.
‫Dus zoals je ziet, roept het de autoshowdetails-methode op en niet die van BMW.
‫En dat komt omdat we hem als auto hebben gemaakt.
‫Maar het is een nieuwe BMW als auto.
‫Dus als we nu hetzelfde doen, laten we doorgaan en een BMW 5 maken,
‫die geen auto wordt, maar deze keer een nieuwe BMW BMW.
‫En deze, laten we zeggen, heeft driehonderddertig pk.
‫Het is wit en het is een M vijf.
‫Dus als ik dit nu V.
‫Willen jij en vijf stippen de details laten zien, het zal me ook het merk laten zien, zodat
‫we merk BMW zijn, HP 330, kleur wit en de eerste.
‫Dus die hier, ze moesten ook de detailmethode tonen, maar ze gebruiken die van auto en nu
‫gebruikt de BMW die van BMW.
‫Dus ook al zeiden we nieuwe BMW, we gebruiken nog steeds de autoklasse om een auto-object te maken van dat wat
‫is.
‫Intern een BMW, maar we noemen de methoden van de auto en niet de BMW-methoden, alleen als we doorgaan
‫en een BMW creëren, noemen we de nieuwe methode.
‫Dus dit nieuwe hier zegt gewoon: OK, als je een object van mij maakt, ga je gang en schrijf het als nieuw.
‫Als je dat niet doet, ga je gang en gebruik gewoon de methode van auto's of van de autoklasse.
‫De basisklasse, zo ongeveer.
‫Maar wat als ik de showdetails-methode van mijn basklasse op mijn BMW-object wil aanroepen, dan kan ik het volgende
‫doen.
‫Ik kan doorgaan en een auto maken, die ik auto B ga noemen, wordt een BMW, M5, maar
‫het wordt een auto.
‫Dus hier gebruik ik casting, zodat ik mijn BMW in een auto giet en nu kan ik doorgaan en de auto gebruiken.
‫B die details van mijn BMW M5 tonen.
‫Of van mijn auto, zodat we weer drie op 30 kleur wit zijn.
‫Dus dat is onze BMW, M5 hier.
‫Dus waarom zou u deze benadering van het verbergen en gebruiken van dit nieuwe sleutelwoord hier zelfs voor uw leden gebruiken?
‫Welnu, u zou dat gebruiken als u wilt dat uw afgeleide lid dezelfde naam
‫heeft als een lid in een basisklasse, maar u wilt niet deelnemen aan een virtuele aanroep.
‫Dus dat is het moment waarop u dit nieuwe trefwoord gebruikt dat we hier hebben gezien.
‫Anders, als u het wilt overschrijven, kunt u eenvoudig deze override-aanpak hier gebruiken of gewoon het
‫sleutelwoord in uw declaratie van de methode overschrijven.
‫Oke.
‫Dus dat is nogal wat.
‫Polymorfisme.
‫In de volgende video gaan we kijken hoe we dat kunnen voorkomen.
‫Dus als je dat niet wilt, kan een methode ooit worden overschreven.
‫Er is een manier om dat te doen in onze basisklasse.
‫Dus tot ziens in de volgende video.