Diferențe în utilizarea de get-ters, set-ters pe o parte, și câmpuri de clasă-pe de altă parte

Care sunt diferențele atunci când folosiți get-terers, set-ters pe o parte și câmpuri de clasă pe cealaltă.

Această întrebare nu a fost în experiența mea, dar mi se pare că este destul de reală și interesantă. Așa că a ridicat-o și a revizuit-o din punct de vedere al funcționalității.







Să presupunem că în costurile de extracție doar get-tere, iar în set-tere - pur și simplu atribuirea de valori în câmpul corespunzător, și ambele metode au același modificator de acces ca domeniu. apoi:

1. Dacă ambele metode și câmpul sunt statice: atunci nu există diferențe de utilizare: 2. Dacă ambele metode și câmpul nu sunt statice: Apoi:






a. Dacă clasa nu are subclase, nu există diferențe de utilizare.
b. Dacă o clasă (o numim superclaj) are o subclasă, există diferențe în utilizare.
Într-o referire directă la instanță câmpului clasei este accesat de un câmp de nivel de clasă, în timp ce atunci când se referă la o metodă de instanță accesează metoda de nivel inferior, cu o modificare corespunzătoare în câmpul de valoare.
Permiteți o variabilă cu un tip de superclasă să se refere la o instanță a subclasei: Apoi, apelul către câmpul superclass nu modifică valoarea câmpului subclasă. Dacă în loc de "..." în exemplul de mai sus înlocuiți codul: atunci în linia de ieșire obținem:

Dacă ți-a plăcut întrebarea, votează-o

alexanderitomy rodionovsasha T1bald saha0074 nikita88pkr igor2265 mf15 TamTam svent0vit bokov homesandbox Sambas Bellatrix Ronny147 user04 Assasin92 almesa iCleveret SamTan AlexVovolka Arch0n alext64 Ruzveld publo belict dcba1257908 olyanca Akula omark Micahel stasico Bawarez xpusha







Trimiteți-le prietenilor: