Konečné a statické

Anonim

V matematice a vědě je konstanta pojem, který označuje určitou hodnotu, jako je 'π', což je praktické jméno pro číslo 3.14159. Java má své konstanty. Jedná se o proměnné, které pod (a) nepatří k žádnému objektu a sub (b) nemění jejich hodnotu, jakmile jsou nastaveny. Statické slovo v deklaraci proměnné ukazuje, že proměnná nepatří k žádnému objektu. Existuje podobné klíčové slovo, které říká, že proměnná hodnota bude nastavena pouze jednou a nebude se měnit. Toto klíčové slovo je konečné. Toto klíčové slovo není omezeno na statické proměnné, ale může být použito s proměnnými instancí, lokálními proměnnými a dokonce s proměnnými, které jsou parametrickými metodami. Deklarováním proměnné jako konečné, ukážete každému, že proměnná během existence bude mít stejnou hodnotu. Ještě důležitější je, že kompilátor rozpozná každý pokus o změnu hodnoty takto deklarované proměnné a nahlásí ji jako chybu. Pokud jde o terminologii Java, proměnná deklarovaná jako statická a konečná se nazývá konstanta.

Co je konečné?

Konečný modifikátor lze použít na několika místech v programovacím jazyce Java. Zde budeme pokrývat její nejběžnější využití. Konečný modifikátor může být použit pro deklaraci lokální proměnné, argumentu funkce a nestátních nebo statických členských proměnných. V této souvislosti se variabilní modifikátor převede na konstantu. Překladatel překladače jazyka zkontroluje, zda se některý kód pokouší změnit hodnotu, a tyto pokusy budou označeny jako chyba. Zde je příklad.

konečná int hodnota = 17;

Statické členské proměnné s tímto modifikátorem se používají jako globální konstanty; například v proměnné PI java.lang.Math je přesně uvedeno

veřejné statické konečné dvojité PI = 3,14159265358979323846;

K deklaraci funkce můžeme použít konečný modifikátor. Funkce označená finálem již nemůže být zrušena - to je její konečná implementace. Abstraktní metody nemohou být prohlášeny za konečné - skutečnost, že jsou abstraktní znamená, že jim chybí implementace; rozhodně nemůže být jejich konečným stavem. Zde je příklad.

veřejný konec int meaningLife () {

návrat 42;

}

K deklaraci tříd můžeme použít konečný modifikátor. Třída, která je označena finálem, již nemůže dědit - to je její konečná realizace. Je zřejmé, že abstraktní třída nemůže být konečná současně. Zde je příklad

veřejná třída uzavřená {

// …

}

Jedním z konečných třídních příkladů je třída java.lang.String - je konečná, takže nikdo ji nemůže dědit a získat tak přístup k členským proměnným.

Co je statické?

Statické proměnné nepatří do konkrétní instance třídy. Statické proměnné patří do třídy samotné a v paměti je pouze jedno umístění, bez ohledu na počet kopií této třídy, které jsou vytvořeny v paměti. Neštastické proměnné patří do třídních vzorků - každá instance třídy má vlastní kopii těchto proměnných. Statické proměnné patří do třídy - třída v paměti uchovává hodnoty takových proměnných; všechny vzorové třídy proto vidí stejný obsah, takže můžeme uvažovat o statických proměnných, které mají být sdíleny mezi všemi velikostmi tříd. Aktualizací proměnné hodnoty bude nová hodnota automaticky viditelná pro všechny instance této třídy. Statický filtr lze použít na jakýkoli prvek legálně deklarovaný uvnitř třídy. V případě členských proměnných je důsledkem toho, že tyto členské proměnné budou uloženy v paměti pouze na jednom místě. Co se stane, pokud je to metoda? Deklarováním metody jako statické je zpráva stejná: příslušná metoda nepatří do tříd tříd, ale do třídy samotné. V důsledku toho statické metody nebudou obdrženy skryté odkazy na objekt, nad kterým jsou volány; v statických referenčních metodách to není k dispozici. Opravdu, vyvolání statických metod v rámci objektu je stejně matoucí jako přístup k statickým členským proměnným odkazem na tento odkaz: v obou případech je lepší jednoduše napsat název třídy, bod a název metody volání.

Rozdíl mezi konečným a statickým

  1. Proměnná

Statické znamená proměnnou, která je společná všem objektům, které instanci dané třídy, zatímco definice definuje konstantu.

  1. Metoda

Statická metoda je stejná pro každý objekt danou třídou - nazývá se také člen třídy, např. taková je hlavní metoda. Konečná metoda nemůže být zpracována ve zděděné třídě.

  1. Třída

Finále nelze rozšířit, tzn. Nepovoluje podtřídy. Statická se nevztahuje na třídu.

  1. Hodnota

Jednoduše řečeno, konec označuje, že hodnota nemůže být změněna (přepsat). Statická hodnota je nastavena na výchozí hodnotu, ale může být znovu inicializována.

Závěrečné vs. statické: Srovnávací graf

Shrnutí závěrečných a statických

  • Klíčová statická práce poskytuje přístup i v případě, že neexistuje žádný objekt (instance). Významné třídy jsou deklarovány prostřednictvím klíčového slova statické. Pokud nechcete, aby hodnota některých změn později v programu přešla, nebo pokud chcete, aby kompilátor kontroloval a zakazoval, můžete tento slib změnit na finále. Existuje statický blok pro inicializaci. Statický blok pro inicializaci je deklarován jako klíčový statický před závorami.Tento typ bloku se provádí jednou během čtení a obvykle inicializuje statické členy třídy.