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.
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 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ó.
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