Klíčové slovo static se používá ke konstrukci metod, které budou existovat bez ohledu na to, zda jsou generovány nějaké instance třídy. Jakákoli metoda, která používá klíčové slovo static, se označuje jako statická metoda.
Madhuri řekl pojď
Vlastnosti statické metody:
- Statická metoda v Javě je metoda, která je součástí třídy spíše než instancí této třídy.
- Každá instance třídy má přístup k metodě.
- Statické metody mají přístup k proměnným třídy (statickým proměnným) bez použití objektu třídy (instance).
- Statickým způsobem lze přistupovat pouze ke statickým datům. Není schopen přistupovat k datům, která nejsou statická (proměnné instance).
- U statických i nestatických metod lze ke statickým metodám přistupovat přímo.
Syntaxe pro deklaraci statické metody:
Access_modifier static void methodName() { // Method body. }>
Název třídy lze použít k vyvolání nebo přístupu ke statickým metodám.
Syntaxe pro volání statické metody:
className.methodName();>
Příklad 1: Statická metoda nemá přístup k proměnné instance
JVM nejprve spustí statickou metodu a poté vytvoří instance třídy. Protože při použití statické metody nejsou přístupné žádné objekty. Statická metoda nemá přístup k proměnným instance. V důsledku toho nemůže statická metoda přistupovat k proměnné instance třídy.
Jáva
gimp uložit jako jpeg
// Java program to demonstrate that> // The static method does not have> // access to the instance variable> > import> java.io.*;> > public> class> GFG {> > // static variable> > static> int> a => 40> ;> > > // instance variable> > int> b => 50> ;> > > void> simpleDisplay()> > {> > System.out.println(a);> > System.out.println(b);> > }> > > // Declaration of a static method.> > static> void> staticDisplay()> > {> > System.out.println(a);> > }> > > // main method> > public> static> void> main(String[] args)> > {> > GFG obj => new> GFG();> > obj.simpleDisplay();> > > // Calling static method.> > staticDisplay();> > }> }> |
>
>Výstup
40 50 40>
Příklad 2: Ve statických i nestatických metodách jsou statické metody přímo přístupné.
Jáva
dva na jeden multiplexer
nepřátelské hledání
// Java program to demonstrate that> // In both static and non-static methods,> // static methods are directly accessed.> > import> java.io.*;> > public> class> StaticExample {> > > static> int> num => 100> ;> > static> String str => 'GeeksForGeeks'> ;> > > // This is Static method> > static> void> display()> > {> > System.out.println(> 'static number is '> + num);> > System.out.println(> 'static string is '> + str);> > }> > > // non-static method> > void> nonstatic()> > {> > // our static method can accessed> > // in non static method> > display();> > }> > > // main method> > public> static> void> main(String args[])> > {> > StaticExample obj => new> StaticExample();> > > // This is object to call non static function> > obj.nonstatic();> > > // static method can called> > // directly without an object> > display();> > }> }> |
>
>Výstup
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Proč používat statické metody?
- Pro přístup a změnu statických proměnných a jiných statických metod, které nejsou založeny na objektu.
- Užitkové a asistenční třídy často využívají statické metody.
Omezení ve statických metodách:
- Nestatické datové členy nebo nestatické metody nemohou být použity statickými metodami a statické metody nemohou volat nestatické metody přímo.
- Ve statickém prostředí není povoleno používat tento a super.
Proč je hlavní metodou v Javě statický?
Je to proto, že volání statické metody není pro objekt potřeba. Pokud by se jednalo o nestatickou funkci, JVM by nejprve vytvořilo objekt před voláním metody main(), což by vedlo k dalším potížím s alokací paměti.
Rozdíl mezi statickou metodou a metodou instance
Metody instance | Statické metody |
---|---|
Vyžaduje objekt třídy. | Nevyžaduje objekt třídy. |
Má přístup ke všem atributům třídy. | Má přístup pouze ke statickému atributu třídy. |
K metodám lze přistupovat pouze pomocí odkazu na objekt. | Metoda je přístupná pouze podle názvu třídy. |
Syntaxe: Objref.methodname() | Syntaxe: className.methodname() |
Je to příklad programování průchozí hodnoty. | Je to příklad programování pass-by-reference. |