Ak môžete riadiť 4-dverové prímestské auto, môžete tiež riadiť pickup. Ak ste riadili auto so spaľovacím motorom, môžete tiež riadiť elektrické auto.
Tvar a veľkosť osobných vozidiel sa môže líšiť od jedného k druhému. Motor, ktorý poháňa tieto vozidlá, môže byť tiež úplne iný. Vodičovi to ale nevadí.
Jednoducho nasadnete, zapnete sa, naštartujete vozidlo, zaradíte rýchlosť a idete. Dôvodom je, že autá, nákladné autá a dodávky sú polymorfné.
Polymorfizmus: Jeho prelomenie
Pozrime sa na slovo polymorfizmus. Môžete to rozobrať na poly, morfa izm.
Poly znamená veľa, podobne ako polygón znamená veľa uhlov. Keď sa používa ako podstatné meno, a morf je variantom druhu. A izm môže znamenať systém.
Polymorfizmus teda jednoducho znamená systém mnohých variácií. To vám však stále nehovorí veľa o tom, ako sa používa v programovaní. To je ďalšie.
Ak to chodí ako kačka... Prečo sú polymorfné objekty úžasné
Keď vo svojom kóde vytvoríte triedu, ktorá dedí z inej triedy, zaväzujete novú triedu k zmluve. V zmluve je uvedené, že každá premenná a funkcia v rodičovi bude aj v dieťati.
Každé vozidlo má volant, plynový a brzdový pedál a smerové svetlo. Na riadenie auta nemusíte otvárať kapotu. Dôležité je len to, že je to auto.
To isté platí pre triedy, ktoré dedia z iných tried. Tu je príklad v strojopisu:
vozidlo triedy {
private _engine: string;
súkromné _pneumatiky: číslo;
konštruktér (motor: reťazec = „spaľovanie“, pneumatiky: číslo = 4) {
this._engine = motor;
this._tires = pneumatiky;
}
zrýchliť (rýchlosť: číslo) {
console.log ("zrýchlenie rýchlosťou" + rýchlosť);
}
brzda (tlak: číslo) {
console.log ("použitie" + tlak + "tlak");
}
odbočiť vľavo() {
console.log ("odbočenie doľava");
}
odbočte vpravo() {
console.log ("odbočenie vpravo");
}
}
auto triedy rozširuje vozidlo {
}
trieda Tesla predlžuje auto {
konštruktor () {
super („elektrický“);
}
}
V tomto prípade existuje a Vozidlo trieda. The Auto trieda dedí od Vozidlo trieda. A Tesla dedí z Auto. Teraz vytvoríme pár predmetov a pozrieme sa na ne.
nech myCoupe: Auto = nové vozidlo ();
console.log (myCoupe);
console.log (myCoupe.constructor.name);
nech mySedan: Vozidlo = nová Tesla ();
console.log (mySedan);
console.log (mySedan.constructor.name);
myCoupe.turnLeft ();
mySedan.turnLeft ();
Môžete vidieť, že sme vyhlásili myCoupe byť Auto a mySedan byť Vozidlo. Potom sme vytvorili inštanciu myCoupe ako nový Vozidlo a mySedan ako nový Tesla. Ak ty navštívte karanténu TypeScript a spustite kód, uvidíte, že funguje bez chýb. A správa sa tak, ako by ste na základe zmluvy očakávali.
Inými slovami, všetky vozidlá môžu odbočiť vľavo, pretože to zdedili po Vozidlo trieda. Kompilátor vie, že každé dieťa z Vozidlo súhlasil so zmluvou. Predpokladá teda, že je všetko v poriadku, bez ohľadu na to, do akých tried boli objekty zadané alebo do ktorých bola zadaná inštancia.
Niekedy sa tomu hovorí „písanie kačice“. Kompilátor predpokladá, že ak chodí ako kačica a hovorí ako kačica, môže to byť aj kačica. Kompilátor si teda nerobí starosti s detailmi a len sa k objektu správa ako kačica.
Polymorfizmus robí váš kód nepriestrelným
Ďalšou výhodou zmluvy o polymorfizme je záruka, že váš kód bude fungovať. Ak ste zadali všetky svoje premenné a čo každá funkcia vracia, viete, že každé dieťa bude vždy zodpovedať premenným, funkciám a typom.
To znamená, že môžete kód vo svojich triedach pridávať a meniť bez toho, aby ste porušili program. Každý objekt, ktorý odkazuje na a Vozidlo objekt vždy získa údaje a funkcie, ktoré spĺňajú očakávania, bez ohľadu na to, koľko Auto zmeny.
Kód vo funkcii nemusí poskytovať správne výsledky. Ale to je iný druh problému. Pokiaľ sa funkcia riadi zmluvou a vracia očakávaný typ premennej, nebude to mať za následok chybu prelomenia kódu.
Polymorfizmus je obrovský a Tu je 10 ďalších princípov programovania, ktoré by ste mali vedieť.
Cvičte polymorfizmus
- Pomocou odkazu vyššie v karanténe vytvorte súbor Čln trieda.
- Vytvorte nový objekt lode tak, aby bol a Vozidlo typu, ale stále vyzerá ako čln.
- Uistite sa, že sa čln stále správa ako vozidlo.
Jeden posledný príklad polymorfizmu
Polymorfizmus môže byť na začiatku chúlostivý koncept. Ale akonáhle to získate, urobili ste obrovský krok k pochopeniu toho, o čom objektové programovanie skutočne je. Tento koncept sa však môže zdať teoretický. Toto je solídny príklad z reálneho sveta, ktorý vám pomôže zistiť, ako je to užitočné.
Predstavte si, že vytvárate webovú aplikáciu, ktorá sa pripája k databáze MySQL. Potom sa šéf rozhodne prejsť na databázu PostgreSQL. Znamená to, že musíte prepísať všetky databázové hovory?
Nie, nie je. Ak vaša aplikácia používa a DataAccess trieda s podtriedami, ktoré sa v skutočnosti hýbu údajmi, máte šťastie. The DataAccess class definuje, ako vaša aplikácia interaguje s údajmi, nie ako interaguje s databázou.
Máte podtriedy ako MySQLAccess a PostgresQLAccess ktoré robia všetku špinavú prácu. Ale ak má vaša aplikácia iba DataAccess objektov, môžete vymieňať databázy bez toho, aby ste prepisovali jediný riadok kódu aplikácie.
Správna správnosť objektovo orientovaného programovania znamená, že potrebujete vedieť o dedičnosti a o tom, ako môže zjednodušiť kódovanie a obmedziť chyby.
Čítajte ďalej
- Programovanie
- Programovanie
- Objektovo orientované programovanie
Lee je nomád na plný úväzok a polymatik s mnohými vášňami a záujmami. Niektoré z týchto vášní sa točia okolo produktivity, osobného rozvoja a písania.
prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!
Kliknutím sem sa prihlásite na odber