Implements V/S Extends V/S ze słowami kluczowymi w Dart

w tym poście omówimy przypadki użycia narzędzi, rozszerzeń i słów kluczowych. Implementuje V / S rozszerza v / S ze słowami kluczowymi w Dart.

wprowadzenie

Jeśli tworzysz aplikację Flutter, powinieneś widzieć wiele przypadków użycia implementacji, rozszerzeń i słów kluczowych. Dla kogoś, kto nigdy wcześniej nie pracował z Dart, różnica między tymi słowami kluczowymi nie jest oczywista.

w tym poście zagłębimy się w te słowa kluczowe, aby poszerzyć nasze zrozumienie trzepotania i Dart.

Implements służy do wymuszania zachowania poprzez interfejs

w OOP, interfejs jest czymś, co wymusza klasę deriving, aby zaimplementować zestaw publicznych pól i metod.

ale w przeciwieństwie do innych tradycyjnych języków programowania, takich jak C# i JAVA, Dart nie ma jawnych typów interfejsów. Każda klasa domyślnie definiuje swój własny interfejs złożony z publicznych pól i metod. Tak więc każda klasa może działać jako interfejs w Dart.

używamy słowa kluczowego implements do implementacji interfejsu. Ponadto klasa może zaimplementować wiele interfejsów.

Dart przykład 1 implementuje

w powyższym przykładzie Klasa D implementuje klasy A, B I C dlatego musi implementować publiczne metody i pola te zajęcia.

Ponadto, ponieważ Dart nie ma jawnych interfejsów, używamy klasy abstract jako interfejsu.

abstract class X { doX();} class Y implements X { @override doX() { // TODO: implement doX return null; }}

Extends służy do współdzielenia zachowania poprzez dziedziczenie

w OOP dziedziczenie oznacza współdzielenie zachowania między klasami. Nie możemy udostępniać funkcji za pomocą interfejsu. Tak więc, kiedy implementujemy klasę, nie możemy dzielić jej zachowania.

przykład Dart rozszerza

w powyższym przykładzie widać, że Klasa B musi dostarczyć własną implementację metody doA() jako zachowanie nie jest dzielone.

Jeśli chcesz udostępnić zachowanie między tymi dwiema klasami, powinieneś użyć słowa kluczowego extends.

class A { doA() { print('A'); }}class B extends A { }main() { var b = B(); b.doA();}

w powyższym przykładzie, ponieważ B rozszerza A, można wywołać metodę Doa() bezpośrednio z obiektu B.

w przeciwieństwie do implementacji wielu interfejsów, Dart obsługuje tylko pojedyncze dziedziczenie. Tak więc, nie można rozszerzyć z wielu klas.

class A { doA() { print('A'); }}class B { doB() { print('B'); }}// Not Allowed!class C extends A, B {}

Z is For Mixin

w OOP, mixin jest klasą, która zawiera metody do użycia przez inne klasy. W przeciwieństwie do interfejsu i metody dziedziczenia, mixin nie musi być klasą nadrzędną tych innych klas.

tak więc mixin ani nie narzuca ograniczenia użycia, ani nie wymusza ograniczenia typu.

Zwykle umieszczasz wspólne funkcje w mixinie. W Dart używamy mixin za pomocą słowa kluczowego with.

przykład Dart z

jak pokazano w powyższym przykładzie, implementacja pól mixin może zostać zastąpiona w razie potrzeby. Ponadto klasa może używać wielu mixinów.

kilka innych rzeczy do zapamiętania o Mixin

używanie klasy jako Mixin

w Dart, klasa może być również używana jako Mixin, jeśli klasa jest bez konstruktora. Na przykład poniższy kod jest prawidłowy.

class D { doD() { print('d'); }}class E with D {}main() { var e = E(); e.doD();}

ale ten poniżej jest nieprawidłowy, ponieważ klasa d deklaruje konstruktor.

class D { D() { } doD() { print('d'); }}class E with D {}

wymuszanie Mixin dla określonych typów

Możesz również wymusić Mixin, aby był użyteczny dla niektórych klas typów tylko za pomocą słowa kluczowego the on podczas definiowania mixin.

mixin Z on D { doZ() { }}class D { doD() { print('d'); }}//Can't do this!class E with Z {}//Can do this!class F extends D with Z {}

wnioski

w tym poście dowiedzieliśmy się o przypadkach użycia implementacji, rozszerzeń i słów kluczowych podczas tworzenia aplikacji Flutter / Dart.

implementuje v/S rozszerza v/S O

, aby podsumować użycie:

  • implementuje do wymuszania zachowań.
  • rozszerza do współdzielenia zachowań jednej klasy.
  • Mixins do udostępniania zachowań z wielu typów wielokrotnego użytku.

dowiedz się więcej:

  • funkcje języka Dart
  • dowiedz się więcej

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.