🤔 Znáte dědičnost?
Dědičnost nám umožňuje vytvářet nové třídy, které znovu používají, rozšiřují a/nebo upravují chování již existujících tříd. Již existující třída se nazývá nadtřída a nová třída, kterou vytváříme, se nazývá odvozená třída. V Dartu můžeme dědit pouze jednu nadtřídu, ale dědičnost je tranzitivní. Pokud je třída class Hatch
odvozena od třídy class Car
a tato třída je odvozena od třídy class Vehicle
, pak bude třída Hatch odvozena od třídy Vehicle. Pro vytvoření odvozené třídy použijte extends
a super
, když se chcete odkázat na nadtřídu.
Pokud class Car extends Vehicle
, všechny vlastnosti, proměnné, funkce implementované v class Vehicle
budou dostupné v class Car
.
Také je možné přepsat funkce nadtřídy.
Takže: extends
použijete, když chcete vytvořit specifičtější verzi třídy.
2⃣️ Použití implements
Předpokládejme, že chcete vytvořit vlastní třídu Auto, aniž byste zdědili všechny vlastnosti, proměnné a funkce třídy Vozidlo, ale chcete zdědit pouze typ Vozidlo. K tomu musí třída Auto implementovat rozhraní Vozidlo.
Dart umožňuje implementovat více tříd nebo rozhraní.
✍️ Příklad
Představte si, že potřebujete implementovat ptáka a kachnu, oba jsou zvířata, ale pták umí pouze létat a kachna umí létat a plavat. Uděláme to pomocí toho, co zatím známe.
Nejprve vytvoříme nadtřídu a chování:
Nyní vytvoříme Bird
a Duck
, implementující správné chování:
Všimněte si, že pomocí implements
jsme museli implementovat funkce fly
a swim
, opakující se kód! Tímto způsobem nebylo možné dědit implementace chování. Existuje způsob, jak kód těchto chování použít opakovaně? Ano, uvidíme příště!
3⃣️ Použití s
Mixin je jiný typ struktury, který lze použít pouze s klíčovým slovem with
a slouží k zahrnutí společných fragmentů kódu, řekl bych, k opakovanému použití kódu.
Mixiny jsou způsobem opakovaného použití kódu třídy v hierarchii více tříd (dartlang.org).
Tady je, jak mixiny provádějí předchozí implementaci:
Můžeš nahradit abstract class
na mixin
, pokud chceš.
Mixiny jsou způsob, jak abstrahovat a znovu použít rodinu operací a stavů, je to podobné opětovnému použití, které získáš rozšířením třídy, ale není vícenásobné dědění, stále je jen jedna nadtřída. Fungují tak, že implementaci mixinu umístíte nad nadtřídu a vytvoříte novou třídu. V příkladu výše je možné přepsat funkci, mixiny to umožňují.
✌️Díky
To byl můj první článek na Médiu, doufám, že se vám líbil 😃.
Rád bych poděkoval Romainu Rastelovi za neuvěřitelný příběh o mixinech, doporučuji přečíst, abyste o tomto tématu pochopili ještě víc.
Jakékoliv dotazy, neváhejte se zeptat níže.