🤔 Czy znasz dziedziczenie?

Dziedziczenie pozwala nam na tworzenie nowych klas, które ponownie wykorzystują, rozszerzają i/lub modyfikują zachowanie wcześniej istniejących klas. Wcześniej istniejąca klasa nazywana jest superklasą, a nowa klasa, którą tworzymy nazywana jest klasą pochodną. W Dart, możemy dziedziczyć tylko jedną superklasę, ale dziedziczenie jest przechodnie. Jeśli class Hatch wywodzi się z class Car, a ta klasa wywodzi się z class Vehicle, to Hatch będzie wywodził się z Vehicle. Użyj extends, aby utworzyć klasę pochodną, i super, gdy chcesz się odwołać do nadklasy.

Gdy class Car extends Vehicle, wszystkie właściwości, zmienne, funkcje zaimplementowane w class Vehicle będą dostępne w class Car.

Jest też możliwe nadpisanie funkcji nadklasy.

Więc: Używasz extends, gdy chcesz stworzyć bardziej specyficzną wersję klasy.

2⃣️ Using implements

Załóżmy, że chcesz stworzyć własną klasę Car, nie dziedzicząc wszystkich właściwości, zmiennych i funkcji klasy Vehicle, ale chcesz dziedziczyć tylko typ Vehicle. Aby to zrobić, klasa Samochód musi zaimplementować interfejs Pojazd.

Dart pozwala na implementację wielu klas lub interfejsów.

✍️ Przykład

Wyobraź sobie, że musisz zaimplementować ptaka i kaczkę, oba są zwierzętami, ale ptak może tylko latać, a kaczka może latać i pływać. Zrobimy to używając tego, co wiemy do tej pory.

Najpierw stworzymy superklasę i zachowania:

Teraz stworzymy Bird i Duck, implementując odpowiednie zachowania:

Zauważ, że używając implements musieliśmy implementować funkcje fly i swim, powtarzając kod! Nie można było w ten sposób dziedziczyć implementacji zachowań. Czy istnieje sposób na ponowne wykorzystanie kodu dla tych zachowań? Tak, zobaczymy dalej!

3⃣️ Using with

Mixin jest innym typem struktury, która może być użyta tylko ze słowem kluczowym with i jest używana do dołączania wspólnych fragmentów kodu, powiedziałbym, ponownego użycia kodu.

Mixiny są sposobem na ponowne użycie kodu klasy w wielu hierarchiach klas (dartlang.org).

Tutaj jest jak mixiny wykonują poprzednią implementację:

Możesz zamienić abstract class na mixin jeśli wolisz.

Miksyny są sposobem na abstrakcję i ponowne użycie rodziny operacji i stanu, jest to podobne do ponownego użycia, które dostajesz od rozszerzenia klasy, ale nie jest wielokrotnym dziedziczeniem, wciąż jest tylko jedna nadklasa. Działają one poprzez umieszczenie implementacji mixin na szczycie nadklasy, aby utworzyć nową klasę. W powyższym przykładzie, możliwe jest przepisanie funkcji, mixiny na to pozwalają.

✌️Thanks

To było moje pierwsze opowiadanie na Medium, mam nadzieję, że Ci się podobało 😃.

Chciałbym podziękować Romain Rastel za niesamowitą historię o mixinach, radzę przeczytać, aby zrozumieć jeszcze więcej na ten temat.

Jakiekolwiek pytania, nie krępuj się pytać poniżej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.