Wednesday, April 24, 2019 04:02

Clase imbricate

C# oferă clase imbricate care, la fel ca toate celelalte concepte de programare imbricate, implică un construct definit în interiorul corpului unui alt construct. Clasa definită în acest fel se numește „clasa interioară”, în timp ce clasa care o conține se numește „clasă exterioară”.

Clasele imbricate sunt utilizate în principal din două motive:

  • pentru a organiza și structura mai bine codul, în special atunci când încercăm să replicăm obiecte ale lumii reale, unde obiectele interioare nu pot exista fără obiectele ce le înglobeză, sau atunci când anumite obiecte depind de existența lor reciprocă.
  • pentru a ascunde și anonimiza o clasă într-o altă clasă, astfel încât aceasta să fie expusă și accesibilă lumii exterioare numai prin clasa ce o înglobează.

Ca regulă generală, clasele imbricate sunt un concept de programare rar folosit, în principal deoarece acestea sporesc complexitatea și structura codului și adaugă nivele imbricate.

Clasele imbricate sunt declarate la fel ca și clasele obișnuite, cu diferența că sunt declarate în interiorul corpului unei alte clase. Ele permit 9 modificatori de acces în declarația lor, dar numai 4 au în realitate importanță pentru dumneavoastră. Aceștia sunt:

  • public – o clasă interioară este accesibilă din oricare ansamblu.
  • intern – o clasă interioară este disponibilă în ansamblul curent, în care se află clasa exterioară.
  • privat – accesul este restricționat numai la clasa care deține clasa interioară.
  • static – o clasă interioară conține numai membri statici.

Ceilalți cinci modificatori, care sunt rar utilizați, sunt: ​​abstract, protected, protected internal, sealed și unsafe.

Rețineți că cuvântul cheie this are înțeles doar legat de elementele clasei interioare. Nu putem accesa elemente ale clasei exterioare din interiorul clasei interioare folosind cuvântul cheie this. Pe de altă parte, membrii statici ai clasei exterioare sunt accesibili clasei interioare, indiferent de nivelul lor de protecție.

Acesta este un exemplu de declarație a unei clase interioare-exterioare:

Rezultatul ar fi următorul:

clase imbricate

În exemplul nostru, clasa exterioară ClasaExterioara definește ca membru în interiorul său clasa ClasaImbricata. Metodele non-statice ale clasei interioare au acces la propriul lor corp this, precum și la instanța de clasă exterioară părinte (prin sintaxa this.parinte, dacă referința părinte este adăugată de dezvoltator). În exemplu, în timp ce creați clasa interioară, referința părinte este setată în constructorul clasei exterioare.

După cum am menționat deja, ori de câte ori aveți alternative și nu trebuie să ilustrați conceptul de sub-obiect din lumea reală, evitați utilizarea claselor imbricate. Totuși, ca exemplu, dacă aveți o clasă numită Masina, ar fi logic să aveți o clasă interioară numită Motor, care nu poate exista sau nu are nici o funcționalitate în exteriorul obiectului ce o inglobează, Masina.

Comments

comments

Tags: , , , , ,

Leave a Reply