Rozdiel medzi konečným a statickým

V matematike a vede je konštanta výraz, ktorý označuje určitú hodnotu, napríklad „π“, čo je praktické meno pre číslo 3.14159. Java má svoje konštanty. Toto sú premenné, ktoré podľa (a) nepatria k žiadnemu objektu a sub (b) nemenia svoju hodnotu, keď sú nastavené. Statické slovo vo vyhlásení premennej ukazuje, že premenná nepatrí žiadnemu objektu. Existuje podobné kľúčové slovo, ktoré hovorí, že hodnota premennej sa nastaví iba raz a nezmení sa. Toto je kľúčové slovo final. Toto kľúčové slovo nie je obmedzené na statické premenné, ale môže sa použiť s premennými inštancie, lokálnymi premennými a dokonca aj s premennými, ktoré sú metódami parametrov. Vyhlásením premennej ako konečnej ukážte všetkým, že premenná počas existencie bude mať rovnakú hodnotu. Čo je dôležitejšie, kompilátor zistí každý pokus o zmenu hodnoty takto deklarovanej premennej a nahlási ju ako chybu. Pokiaľ ide o terminológiu Java, premenná, ktorá sa deklaruje ako statická a konečná, sa nazýva konštanta.

Čo je konečné?

Konečný modifikátor môže byť použitý na viacerých miestach v programovacom jazyku Java. Tu sa venujeme jeho najbežnejšiemu použitiu. Konečný modifikátor sa môže použiť na deklaráciu lokálnej premennej, argumentu funkcie a nestatických alebo statických členských premenných. V tomto kontexte sa premenný modifikátor prevedie na konštantu. Prekladateľ prekladateľského jazyka skontroluje, či sa nejaký kód pokúša zmeniť hodnotu a takéto pokusy budú označené ako chyba. Tu je príklad.

konečná int hodnota = 17;

Premenné statických členov s týmto modifikátorom sa používajú ako globálne konštanty; napríklad v premennej java.lang.Math PI sa presne uvádza

verejné statické konečné dvojité PI = 3,14159265358979323846;

Konečný modifikátor môžeme použiť na vyhlásenie o funkcii. Funkcia označená ako finálna už nemôže byť potlačená - to je jej konečná implementácia. Abstraktné metódy nemožno vyhlásiť za konečné - skutočnosť, že sú abstraktné, znamená, že im chýba implementácia; určite to nemôže byť ich konečný stav. Tu je príklad.

verejné konečné intLife ()

návrat 42;

Konečný modifikátor môžeme použiť na vyhlásenie triedy. Trieda, ktorá je označená ako konečná, už nemôže zdediť - to je jej konečná implementácia. Je zrejmé, že abstraktná trieda nemôže byť zároveň konečná. Tu je príklad

verejná záverečná trieda Zatvorené

// ...

Jedným z príkladov konečných tried je trieda java.lang.String - je konečná, takže ju nikto nemôže zdediť a získať tak prístup k svojim premenným člena.

Čo je statické?

Statické premenné nepatria do konkrétnej inštancie triedy. Statické premenné patria do samotnej triedy a v pamäti existuje iba jedno miesto bez ohľadu na počet kópií tejto triedy, ktoré sú vytvorené v pamäti. Nestatické premenné patria do vzoriek triedy - každá inštancia triedy má svoju vlastnú kópiu takýchto premenných. Statické premenné patria do triedy - trieda v pamäti uchováva hodnoty týchto premenných; všetky vzorové triedy preto vidia rovnaký obsah, takže môžeme považovať statické premenné za zdieľané medzi všetkými veľkosťami tried. Aktualizáciou premennej value bude nová hodnota automaticky viditeľná pre všetky inštancie tejto triedy. Statický filter sa dá použiť na akýkoľvek prvok, ktorý je v rámci triedy legálne deklarovaný. V prípade členských premenných je dôsledkom to, že také členské premenné sa uložia do pamäte iba na jednom mieste. Čo sa stane, ak ide o metódu? Vyhlásením metódy za statickú je správa rovnaká: príslušná metóda nepatrí do tried tried, ale do samotnej triedy. V dôsledku toho statické metódy nedostanú skrytý odkaz na objekt, cez ktorý sú volané; pri statických referenčných metódach je to nedostupné. Vyvolávanie statických metód naprieč objektom je skutočne mätúce ako prístup k premenným statických členov odkazom na tento odkaz: v obidvoch prípadoch je lepšie jednoducho napísať názov triedy, bod a názov volajúcej metódy..

Rozdiel medzi konečným a statickým

  1. premenlivý

Statický znamená premennú, ktorá je spoločná pre všetky objekty, ktoré vytvoria inštanciu danej triedy, zatiaľ čo konečná definuje konštantu.

  1. metóda

Statická je metóda, ktorá je rovnaká pre každý objekt danej triedy - nazýva sa aj člen triedy, napr. to je hlavná metóda. Konečná metóda nemôže byť spracovaná v zdedenej triede.

  1. Trieda

Finále sa nedá rozšíriť, t. J. Neumožňuje podtriedy. Statické sa nevzťahuje na triedu.

  1. hodnota

Zjednodušene povedané, konečný znamená, že hodnotu nie je možné zmeniť (prepísať). Statická hodnota je nastavená na predvolenú hodnotu, je však možné ju opätovne inicializovať.

Finálna verzus statická: porovnávacia tabuľka

Zhrnutie záverečnej a statickej

  • Statická práca kľúča poskytuje prístup, aj keď neexistuje žiadny objekt (inštancia). Významné triedy sa deklarujú pomocou kľúčového slova statický. Ak si neželáte, aby sa niektoré zmeny v programe zmenili neskôr, alebo ak chcete, aby kompilátor skontroloval a zakázal, môžete tento prísľub zmeniť na konečný. Na inicializáciu je statický blok. Statický blok pre inicializáciu je deklarovaný ako kľúčový statický pred zátvorkami. Tento druh bloku sa vykoná raz, počas čítania tried, a zvyčajne inicializuje statické členy triedy.