Aby sme pochopili, ako fungujú triedy, premenné a metódy v Jave, je dôležité pochopiť pojmy statické a nestatické. Nestatické členy sú spojené s konkrétnymi inštanciami triedy, zatiaľ čo statické členy sú spojené s triedou. V tejto časti porovnáme statické a nestatické komponenty Java, zdôrazníme ich rozdiely a potenciálne aplikácie.
Spojené s
Statické: Statické členy (premenné a metódy) sú spojené skôr so samotnou triedou než s jednotlivými inštanciami.
Nestatické: Nestatické členy sú špecifické pre každú inštanciu triedy, pretože sú viazané na objekty vytvorené z triedy.
Alokácia pamäte
Statické: Statickým členom je pridelená pamäť iba raz, v čase načítania triedy. Sú zdieľané medzi všetkými inštanciami triedy.
Nestatické: Nestatickí členovia majú pamäť alokovanú samostatne pre každú inštanciu triedy. Každý objekt má svoju vlastnú kópiu nestatických členov.
Pristupuje sa
Statické: K statickým členom je možné pristupovať priamo pomocou názvu triedy, za ktorým nasleduje názov člena (napr. ClassName.memberName). Sú dostupné odkiaľkoľvek v rámci programu.
Nestatické: K nestatickým členom sa pristupuje pomocou odkazu na objekt, za ktorým nasleduje názov člena (napr. objectReference.memberName). Sú špecifické pre konkrétnu inštanciu triedy.
Inicializácia
Statické: Statické členy sa inicializujú, keď sa trieda načíta do pamäte, zvyčajne počas spúšťania programu. Inicializácia prebehne iba raz.
Nestatické: Nestatické členy sa inicializujú pri vytvorení každej inštancie triedy, zvyčajne pomocou kľúčového slova new. Inicializácia prebieha samostatne pre každý objekt.
Rozsah
Statické: Statické členy majú globálny rozsah a možno k nim pristupovať odkiaľkoľvek v rámci programu, dokonca aj bez vytvorenia inštancie triedy.
Nestatické: Nestatickí členovia majú lokálny rozsah a možno k nim pristupovať iba prostredníctvom inštancie triedy. Bez vytvorenia objektu nie sú prístupné.
Prístup k členom
Statické: Statický členovia môžu pristupovať iba k iným statickým členom v rámci tej istej triedy. Nemôžu priamo pristupovať k nestatickým členom.
Nestatické: Nestatické členy môžu pristupovať k statickým aj nestatickým členom v rámci tej istej triedy. Majú priamy prístup ku všetkým členom.
Použitie
Statické: Statické členy sa bežne používajú pre pomocné metódy, konštanty alebo premenné, ktoré nie sú špecifické pre jednotlivé inštancie. Napríklad trieda Math obsahujúca matematické funkcie.
Nestatické: Nestatické členy sa používajú na správanie špecifické pre inštanciu, pretože obsahujú údaje špecifické pre každý objekt. Napríklad premenné inštancie, ktoré uchovávajú jedinečné hodnoty pre každý objekt.
Efektivita pamäte
Statické: Statické členy spotrebujú pamäť iba raz, bez ohľadu na počet vytvorených inštancií. Môžu byť efektívne z hľadiska pamäte, keď musia byť rovnaké údaje zdieľané medzi všetkými objektmi.