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.

instagram viewer

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.

zdieľamTweetE -mail
Ako organizovať svoj objektovo orientovaný kód s dedičstvom

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

Súvisiace témy
  • Programovanie
  • Programovanie
  • Objektovo orientované programovanie
O autorovi
Lee Nathan (19 publikovaných článkov)

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.

Viac od Lee Nathana

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