This shows you the differences between two versions of the page.
|
poo-ca-cd:laboratoare:obiecte-in-java [2025/10/15 04:31] florian_luis.micu [Proprietăți] |
poo-ca-cd:laboratoare:obiecte-in-java [2025/10/15 04:36] (current) florian_luis.micu [Metode statice] |
||
|---|---|---|---|
| Line 1112: | Line 1112: | ||
| <note tip> | <note tip> | ||
| Variabilele statice **pot** fi accesate în constructori, întrucât sunt inițializate odată cu încărcarea clasei. | Variabilele statice **pot** fi accesate în constructori, întrucât sunt inițializate odată cu încărcarea clasei. | ||
| + | </note> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====Metode statice==== | ||
| + | |||
| + | O **metodă statică** este o metodă care aparține clasei și poate fi apelată **fără a crea un obiect** al clasei, având acces doar la membri statici. | ||
| + | |||
| + | <code java> | ||
| + | class Apple { | ||
| + | public static final int SMALL = 0, MEDIUM = 1, LARGE = 2; | ||
| + | | ||
| + | public int size; | ||
| + | |||
| + | // Funcționează | ||
| + | public static String[] getAppleSizes() { | ||
| + | return new String[] { "SMALL", "MEDIUM", "LARGE" }; | ||
| + | } | ||
| + | | ||
| + | // Eroare, "size" nu este static | ||
| + | public static int getSize() { | ||
| + | return size; | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | <note important> | ||
| + | * Metodele statice pot accesa doar **variabile statice**, deoarece membrii statici sunt inițializați **înainte de crearea instanțelor**. Astfel, o variabilă care aparține instanței, cum este ''size'', nu ar fi încă inițializată în momentul în care metoda statică ''getSize()'' este apelată. | ||
| + | * În **metodele sau blocurile statice**, cuvântul cheie ''this'' nu poate fi folosit, deoarece el face referire la **instanța curentă a clasei**. În momentul în care codul static este executat, **nu există** încă niciun obiect creat, deci nu există nicio instanță la care ''this'' să se refere. | ||
| + | </note> | ||
| + | |||
| + | ===== ===== | ||
| + | |||
| + | <note tip> | ||
| + | * Folosiți ''static'' pentru **constante**, **contoare**, **configurații globale** sau **metode utilitare** (ex. ''Math.sqrt()''). Puteți găsi câteva exemple concrete în secțiunea **[Nice to know]** de mai jos. | ||
| + | * Nu folosiți foarte des ''static'', deoarece poate strica **încapsularea** ceea ce va face codul mai greu de testat. | ||
| </note> | </note> | ||
| Line 1194: | Line 1232: | ||
| </code> | </code> | ||
| </spoiler> | </spoiler> | ||
| - | |||
| - | <note tip> | ||
| - | Folosiți ''static'' pentru **constante**, **contoare**, **configurații globale** sau **metode utilitare** (ex. ''Math.sqrt()''). Nu folosiți foarte des ''static'', deoarece poate strica **încapsularea** ceea ce va face codul mai greu de testat. | ||
| - | </note> | ||
| - | |||
| - | |||
| - | |||
| - | ====Metode statice==== | ||
| - | |||
| - | O **metodă statică** este o metodă care aparține clasei și poate fi apelată **fără a crea un obiect** al clasei, având acces doar la membri statici. | ||
| - | |||
| - | <code java> | ||
| - | class Apple { | ||
| - | public static final int SMALL = 0, MEDIUM = 1, LARGE = 2; | ||
| - | | ||
| - | public int size; | ||
| - | |||
| - | // Funcționează | ||
| - | public static String[] getAppleSizes() { | ||
| - | return new String[] { "SMALL", "MEDIUM", "LARGE" }; | ||
| - | } | ||
| - | | ||
| - | // Eroare, "size" nu este static | ||
| - | public static int getSize() { | ||
| - | return size; | ||
| - | } | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | <note tip> | ||
| - | Metodele statice pot accesa doar **variabile statice**, deoarece membrii statici sunt inițializați **înainte de crearea instanțelor**. Astfel, o variabilă care aparține instanței, cum este ''size'', nu ar fi încă inițializată în momentul în care metoda statică ''getSize()'' este apelată. | ||
| - | </note> | ||
| - | |||
| - | <note important> | ||
| - | În **metodele sau blocurile statice**, cuvântul cheie ''this'' nu poate fi folosit, deoarece el face referire la **instanța curentă a clasei**. În momentul în care codul static este executat, **nu există** încă niciun obiect creat, deci nu există nicio instanță la care ''this'' să se refere. | ||
| - | </note> | ||
| <hidden> | <hidden> | ||