Co je statická metoda?
Objektově orientovaná počítačová programovací metoda, která je deklarována ve třídě, ale není závislá na žádné konkrétní instanci této třídy, se nazývá statická metoda. Většina programovacích jazyků obsahuje klíčové slovo statické v deklaraci metody, aby byla metoda statická. Tyto metody patří výhradně do třídy, v níž jsou obsaženy, a nikoli k žádnému objektu vytvořenému z této třídy. Často se označují jako třídní metody .
Doslovný název třídy se obvykle používá pro přístup ke statické metodě místo toho, aby na ni odkazoval s názvem instance objektu. V Javě je přípustné používat názvy objektů k odkazu na tyto metody, ale důrazně se to nedoporučuje. Pokud je použit název objektu, může osoba čtoucí kód zaměnit jednu z těchto metod s instanční metodou.
Statické metody se často používají ve třídách utilit, které nezávisí na proměnných instance z konkrétní třídy. Používají se také v případě, že programátor potřebuje přístup k metodě, ale není nutné vytvořit instanci třídy, v níž je obsažena. Třídy utilit se za normálních okolností neinicializují do objektů. Bylo by neobvyklé, že by metoda obsluhy měla potřebu upravit informace o objektu. Příkladem toho, jak by se tento typ metody použil ve třídě utility, by byla metoda ze třídy java.lang.math, například pow ().
Metody instance mohou přímo přistupovat k proměnným instance, statickým proměnným, metodám instance a statickým metodám. Statické metody nemohou přímo přistupovat k proměnným instance a metodám instance. Vzhledem k povaze instančních metod, které mají lepší přístup ke členům třídy než statické metody, jsou instanční metody typem metod běžně používaných v běžných třídách.
Jedna hlavní nevýhoda statických metod nastává během dědičnosti při použití polymorfismu. Dokud není nadřazená statická metoda deklarována jako konečná, může být ve podřízené třídě kódována stejná podřízená statická metoda, jako by byla přepsána. Toto je technicky nazýváno skrýváním namísto potlačení, protože nelze přepsat statickou metodu.
Pokud se používá skrývání, pokud se k nadřazené statické metodě přistupuje pomocí názvu třídy, použije se nadřazená metoda. Pokud je přístup k přepsané podřízené statické metodě pomocí názvu objektu, bude použita přepsaná podřízená metoda. K problému dochází, když je podřízený objekt vyřazen jako nadřazený. V takovém případě bude volání na vyvýšenou podřízenou statickou metodu namísto očekávané podřízené metody použít nadřazenou metodu. Při skutečném polymorfismu by byla podřízená metoda tou aktivovanou po vyvržení.