Implements v / s kiterjeszti v / s kulcsszavakkal Dart

ebben a bejegyzésben fogunk menni terjed használati esetek végrehajtja, kiterjeszti és kulcsszavakkal. Megvalósítja v / s kiterjeszti v / s kulcsszavakkal Dart.

Bevezetés

Ha Flutter alkalmazást fejleszt, sok felhasználási esetet kellett volna látnia az implementekhez, kiterjesztésekhez és kulcsszavakhoz. Azok számára, akik még soha nem dolgoztak Dartdal, a kulcsszavak közötti különbség nem nyilvánvaló.

ebben a bejegyzésben mélyebben megvizsgáljuk ezeket a kulcsszavakat, hogy kibővítsük a Flutter és a Dart megértését.

Implements az interfészen keresztüli viselkedés kényszerítésére szolgál

az OOP-ban az interfész olyan dolog, amely kényszeríti a származtató osztályt a nyilvános mezők és módszerek meghatározott listájának megvalósítására.

de ellentétben más hagyományos programozási nyelvekkel, mint a C# és a JAVA, A Dart nem rendelkezik explicit interfésztípusokkal. Alapértelmezés szerint minden osztály meghatározza a saját felületét, amely nyilvános mezőkből és metódusokból áll. Tehát minden osztály interfészként működhet a Dartban.

az implements kulcsszót használjuk egy interfész megvalósításához. Egy osztály több interfészt is megvalósíthat.

Dart példa 1 végrehajtja

a fenti példában a D osztály végrehajtja az A, B és C osztályokat, ezért végre kell hajtania a nyilvános módszereket és mezőket azokból az osztályokból.

Továbbá, mivel a Dart nem rendelkezik explicit interfészekkel, az absztrakt osztályt használjuk interfészként.

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

az Extends a viselkedés öröklés útján történő megosztására szolgál

az OOP-ban az öröklés a viselkedés megosztását jelenti az osztályok között. Nem tudjuk megosztani funkciók egy felület. Tehát, amikor végrehajtunk egy osztályt, nem tudjuk megosztani a viselkedését.

a Dart példa kiterjeszti

a fenti példában láthatja, hogy a B osztálynak meg kell adnia a doA() módszer saját megvalósítását, mint a viselkedés nem megosztott.

Ha meg szeretné osztani a viselkedést e két osztály között, akkor használja az extends kulcsszót.

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

a fenti példában, mivel B kiterjeszti a, meghívhatja a doA() metódust közvetlenül B objektumából.

a több interfész megvalósításával ellentétben a Dart csak egyetlen öröklést támogat. Tehát nem lehet kiterjeszteni több osztályból.

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

az Is for Mixin

az OOP-ban a mixin olyan osztály, amely más osztályok által használható módszereket tartalmaz. Ellentétben az Interface és az öröklődés megközelítéssel, a mixin nem kell, hogy a többi osztály szülőosztálya legyen.

tehát a mixin nem ír elő Használati korlátozást, sem kényszerít típusú korlátozást.

általában közös funkciókat helyez el egy mixin belsejében. A Dart, használjuk a mixin segítségével a kulcsszó.

Dart példa

a fenti példában látható módon a mixin mezők végrehajtása szükség esetén felülbírálható. Ezenkívül egy osztály több mixint is használhat.

néhány további megjegyzés a Mixinről

osztály használata Mixinként

a Dartban egy osztály mixinként is használható, ha az osztály konstruktor nélküli. Például az alábbi kód érvényes.

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

de ez az alábbi érvénytelen, mert a D osztály deklarál egy konstruktort.

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

a Mixin érvényesítése bizonyos típusokhoz

azt is kikényszerítheti, hogy a mixin bizonyos típusú osztályokhoz csak az on kulcsszó használatával használható legyen a mixin meghatározásakor.

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 {}

következtetés

ebben a bejegyzésben megtudtuk a használati esetek végrehajtja, kiterjeszti és a kulcsszavak fejlesztésekor Flutter/Dart alkalmazások.

megvalósítja v / s kiterjeszti v / s a

összefoglalva használat:

  • végrehajtja érvényesítésére viselkedések.
  • kiterjeszti az egyosztályú viselkedések megosztását.
  • Mixins megosztására viselkedések több újrafelhasználható típusok.

További információ:

  • Dart nyelvi jellemzők
  • Ismerje meg a Flutter

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.