implementuje v/S rozšiřuje v / s klíčovými slovy v Dart

v tomto příspěvku půjdeme pokrýt případy použití pro implementuje, rozšiřuje a klíčová slova. Implementuje v / s rozšiřuje v / s s klíčovými slovy v Dart.

Úvod

pokud vyvíjíte aplikaci Flutter, měli jste vidět mnoho případů použití pro implementuje, rozšiřuje a klíčová slova. Pro někoho, kdo s Dart nikdy předtím nepracoval, není rozdíl mezi těmito klíčovými slovy zřejmý.

v tomto příspěvku půjdeme do hloubky o těchto klíčových slovech, abychom rozšířili naše chápání flutteru a šipky.

Implements je pro vynucení chování přes rozhraní

v OOP je rozhraní něco, co vynucuje odvozující třídu k implementaci nastaveného seznamu veřejných polí a metod.

ale na rozdíl od jiných tradičních programovacích jazyků, jako je C# a JAVA, Dart nemá explicitní typy rozhraní. Každá třída ve výchozím nastavení definuje své vlastní rozhraní složené z veřejných polí a metod. Takže každá třída může fungovat jako rozhraní v Dart.

používáme Klíčové slovo implementuje implementovat rozhraní. Třída může také implementovat více rozhraní.

Dart Příklad 1 Implementuje

V příkladu výše, třída D implementuje třídy a, B a C tedy musí realizovat veřejné metody a pole těchto tříd.

kromě toho, protože Dart nemá explicitní rozhraní, používáme abstraktní třídu jako rozhraní.

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

Rozšiřuje Je Pro Sdílení Chování Prostřednictvím Dědictví

V OOP, dědičnost znamená sdílení chování mezi třídami. Nemůžeme sdílet funkce s rozhraním. Takže když implementujeme třídu, nemůžeme sdílet její chování.

Dart Příklad Rozšiřuje

Ve výše uvedeném příkladu můžete vidět, že třídy B musí poskytovat je vlastní provádění doA() metoda jako chování není sdílený.

Pokud chcete sdílet chování mezi těmito dvěma třídami, měli byste použít klíčové slovo extends.

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

Ve výše uvedeném příkladu, protože B rozšiřuje, můžete volat doA() metoda přímo od B je objekt.

Na rozdíl od implementace více rozhraní Dart podporuje pouze jednu dědičnost. Takže nemůžete rozšířit z více tříd.

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

s Is pro Mixin

v OOP je mixin třída, která obsahuje metody pro použití jinými třídami. Na rozdíl od přístupu rozhraní a dědičnosti nemusí být mixin nadřazenou třídou těchto jiných tříd.

takže mixin neukládá omezení použití ani vynucuje omezení typu.

obvykle vložíte společné funkce do mixinu. V Dart, využíváme mixin pomocí klíčového slova s.

Dart Příklad S

Jak je znázorněno v příkladu výše, provádění mixin pole může být přepsána, pokud je požadováno. Kromě toho může třída používat více mixinů.

Pár Věcí, Na Vědomí, O Mixin

Použití Třídy Jako Mixin

V Dart, třída může být také použit jako mixin je-li třída konstruktor-méně. Například níže uvedený kód je platný.

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

ale tento Níže je neplatný, protože třída D deklaruje Konstruktor.

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

Prosazování Mixin Pro Konkrétní Typy

můžete také vynutit mixin, aby byl použitelný pro určité typy tříd pouze pomocí na klíčové slovo při definování 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 {}

Závěr

V tomto příspěvku jsme se dozvěděli o případy použití nářadí, prodlužuje a s klíčová slova při vývoji Flutter/Dart aplikací.

implementuje v / s rozšiřuje v / s pomocí

shrnout použití:

  • implementuje pro vynucování chování.
  • se vztahuje na sdílení chování jedné třídy.
  • Mixins pro sdílení chování z více opakovaně použitelných typů.

další informace:

  • Dart Language Features
  • Learn Flutter

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.