Rozdiel medzi konečným a statickým

V matematike a prírodných vedách je konštanta pojem, ktorý označuje určitú hodnotu, napríklad „π“, čo je praktický názov pre číslo 3.14159. Java má svoj druh konštánt. Jedná sa o premenné, ktoré podľa písmena a) nepatria k žiadnym objektom a písmena b) nemení svoju hodnotu, akonáhle sú nastavené. Statické slovo v deklarácii premennej ukazuje, že premenná nepatrí k žiadnemu objektu. Existuje podobné kľúčové slovo, ktoré hovorí, že hodnota premennej bude nastavená iba raz a nezmení sa. Toto je kľúčové slovo final. Toto kľúčové slovo nie je obmedzené na statické premenné, ale dá sa použiť s premennými inštancie, lokálnymi premennými a dokonca aj s premennými, ktoré sú metódami parametrov. Deklarovaním premennej ako konečnej ukážete všetkým, že premenná počas existencie bude mať rovnakú hodnotu. Dôležitejšie je, že 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á je deklarovaná ako statická a konečná, sa nazýva konštanta.



Čo je finále?

Konečný modifikátor je možné v programovacom jazyku Java použiť na viacerých miestach. Tu sa budeme venovať jeho najbežnejšiemu použitiu. Konečný modifikátor je možné použiť na deklaráciu lokálnej premennej, argument funkcie a nestatické alebo statické členské premenné. V tejto súvislosti sa premenný modifikátor prevádza na konštantu. Prekladač prekladového jazyka skontroluje, či sa niektorý kód pokúša upraviť hodnotu, a tieto pokusy budú označené ako chyba. Tu je príklad.

konečná hodnota int = 17;

Statické členské premenné s týmto modifikátorom sa používajú ako globálne konštanty; napríklad v premennej PI java.lang.Math je uvedené presne



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

Finálny modifikátor môžeme použiť na deklaráciu funkcie. Funkciu označenú ako konečnú už nie je možné zrušiť - to je jej konečná implementácia. Abstraktné metódy nemožno vyhlásiť za konečné - skutočnosť, že sú abstraktné, znamenajú ich nedostatočnú implementáciu; určite to nemôže byť ich konečný stav. Tu je príklad.

public final int meaningLife () {



návrat 42;

}

Finálny modifikátor môžeme použiť na deklaráciu triedy. Trieda, ktorá je označená ako konečná, už nemôže dediť - 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 nemohol zdediť a získať tak prístup k svojim členským premenným.

Čo je statické?

Statické premenné nepatria do konkrétnej inštancie triedy. Statické premenné patria do samotnej triedy a v pamäti je iba jedno umiestnenie bez ohľadu na počet kópií tejto triedy, ktoré sú vytvorené v pamäti. Nestatické premenné patria k exemplárom 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 ukážkové triedy preto vidia rovnaký obsah, takže môžeme považovať statické premenné za zdieľané medzi všetky veľkosti tried. Aktualizáciou premennej hodnoty bude nová hodnota automaticky viditeľná pre všetky inštancie tejto triedy. Statický filter je možné použiť na akýkoľvek prvok legálne deklarovaný v rámci triedy. V prípade členských premenných to má za následok, že také členské premenné budú uložené v pamäti iba na jednom mieste. Čo sa stane, ak ide o metódu? Deklarovaním metódy ako statickej 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, nad ktorým sú volaným volané; v statických referenčných metódach to nie je k dispozícii. V skutočnosti je vyvolanie statických metód v celom objekte rovnako mätúce ako prístup k premenným statických členov odkazom na tento odkaz: v oboch 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. Variabilné

Static znamená premennú, ktorá je spoločná pre všetky objekty, ktoré vytvárajú inštancie danej triedy, zatiaľ čo final definuje konštantu.

  1. Metóda

Statická je metóda, ktorá je rovnaká pre každý objekt danej triedy - nazýva sa tiež člen triedy napr. taká je hlavná metóda. Finálnu metódu nie je možné spracovať v zdedenej triede.

  1. Trieda

Finále nie je možné rozšíriť, t. J. Neumožňuje podtriedy. Statické sa nevzťahuje na triedy.

  1. Hodnota

Zjednodušene povedané, final označuje, že hodnotu nie je možné zmeniť (prepísať). Statická hodnota je nastavená na predvolenú hodnotu, ale je možné ju znovu inicializovať.

Konečné vs. statické: Porovnávacia tabuľka

Zhrnutie záverečného a statického výsledku

  • Kľúčová statická práca poskytuje prístup, aj keď neexistuje žiadny objekt (inštancia). Prominentné triedy sú deklarované prostredníctvom kľúčového slova static. Ak nechcete, aby sa neskôr prejavili hodnoty niektorých zmien v programe, alebo ak chcete, aby kompilátor skontroloval a zakázal, môžete tento prísľub zmeniť na finále. Pre inicializáciu existuje 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.