În acest post, vom merge acoperi cazuri de utilizare pentru implementează, se extinde și cu cuvinte cheie. Implementează V / S extinde v / S cu cuvinte cheie în Lance.
Introducere
dacă dezvoltați o aplicație Flutter, ar fi trebuit să vedeți o mulțime de cazuri de utilizare pentru implementări, extinderi și cu cuvinte cheie. Pentru cineva care nu a lucrat niciodată cu Dart înainte, diferența dintre aceste cuvinte cheie nu este evidentă.
în acest post, vom merge în profunzime cu privire la aceste cuvinte cheie pentru a extinde înțelegerea noastră de Flutter și Lance.
Implements este pentru forțarea comportamentului prin interfață
în OOP, o interfață este ceva care impune clasa derivantă pentru a implementa o listă setată de câmpuri și metode publice. dar ,spre deosebire de alte limbaje de programare tradiționale, cum ar fi C# și JAVA, Dart nu are tipuri de interfață explicite. Fiecare clasă, în mod implicit, definește propria interfață compusă din câmpuri și metode publice. Deci, fiecare clasă poate acționa ca o interfață în Dart.
folosim cuvântul cheie implements pentru a implementa o interfață. De asemenea, o clasă poate implementa mai multe interfețe.
în exemplul de mai sus, clasa D implementează clasele A, B și C, prin urmare, trebuie să implementeze metodele și câmpurile publice din aceste clase.
Mai mult, deoarece Dart nu are interfețe explicite, folosim clasa abstractă ca interfață.
abstract class X { doX();} class Y implements X { @override doX() { // TODO: implement doX return null; }}
extinde este pentru partajarea comportamentului prin moștenire
în OOP, moștenirea implică partajarea comportamentului între clase. Nu putem partaja caracteristici cu o interfață. Deci, atunci când implementăm o clasă, nu putem împărtăși comportamentul acesteia.
în exemplul de mai sus, puteți vedea că clasa B trebuie să furnizeze propria implementare a metodei doA() ca comportamentul nu este împărtășit.
Dacă doriți să partajați comportamentul în aceste două clase, ar trebui să utilizați cuvântul cheie extends.
class A { doA() { print('A'); }}class B extends A { }main() { var b = B(); b.doA();}
în exemplul de mai sus, deoarece B extinde A, puteți apela metoda doA() direct din obiectul lui B.spre deosebire de implementarea mai multor interfețe, Dart acceptă doar o singură moștenire. Deci, nu vă puteți extinde de la mai multe clase.
class A { doA() { print('A'); }}class B { doB() { print('B'); }}// Not Allowed!class C extends A, B {}
cu este pentru Mixin
în OOP, un mixin este o clasă care conține metode de utilizare de către alte clase. Spre deosebire de abordarea de interfață și moștenire, un mixin nu trebuie să fie clasa părinte a celorlalte clase.
deci un mixin nu impune nici restricții de utilizare, nici restricții de tip forțe.
veți pune, de obicei, funcții comune în interiorul unui mixin. În Dart, vom face uz de mixin folosind cu cuvinte cheie.
după cum se arată în exemplul de mai sus, implementarea câmpurilor mixin poate fi anulată dacă este necesar. În plus, o clasă poate utiliza mai multe mixine.
câteva lucruri de reținut despre Mixin
folosind o clasă ca Mixin
în Dart, o clasă poate fi folosită și ca mixin dacă clasa este fără constructor. De exemplu, codul de mai jos este valid.
class D { doD() { print('d'); }}class E with D {}main() { var e = E(); e.doD();}
dar aceasta de mai jos este nevalidă deoarece clasa D declară un constructor.
class D { D() { } doD() { print('d'); }}class E with D {}
aplicarea Mixinului pentru anumite tipuri
de asemenea, puteți aplica un mixin pentru a fi utilizabil pentru anumite clase de tipuri numai utilizând cuvântul cheie on la definirea mixinului.
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 {}
concluzie
În această postare am aflat despre cazurile de utilizare pentru implementări, extinderi și cu cuvinte cheie la dezvoltarea aplicațiilor Flutter / Dart.
implementează v/S extinde v/S cu
pentru a rezuma utilizare:
- implementează pentru aplicarea comportamentelor.
- se extinde pentru schimbul de comportamente de o singură clasă.
- Mixins pentru schimbul de comportamente de la mai multe tipuri reutilizabile.
Aflați mai multe:
- caracteristici limba Dart
- aflați Flutter