logo

Statická metóda v Jave s príkladmi

Kľúčové slovo statické sa používa na zostavenie metód, ktoré budú existovať bez ohľadu na to, či sa vygenerujú nejaké inštancie triedy alebo nie. Každá metóda, ktorá používa kľúčové slovo static, sa označuje ako statická metóda.

Vlastnosti statickej metódy:



  • Statická metóda v jazyku Java je metóda, ktorá je súčasťou triedy a nie inštanciou tejto triedy.
  • Každá inštancia triedy má prístup k metóde.
  • Statické metódy majú prístup k premenným triedy (statickým premenným) bez použitia objektu triedy (inštancie).
  • Statickým spôsobom je možné pristupovať iba k statickým údajom. Nemá prístup k údajom, ktoré nie sú statické (premenné inštancie).
  • Pri statických aj nestatických metódach je možné pristupovať priamo k statickým metódam.

Syntax na deklarovanie statickej metódy:

Access_modifier static void methodName() { // Method body. }>

Názov triedy možno použiť na vyvolanie alebo prístup k statickým metódam.

Syntax na volanie statickej metódy:



className.methodName();>

Príklad 1: Statická metóda nemá prístup k premennej inštancie

JVM najprv spustí statickú metódu, po ktorej nasleduje vytvorenie inštancií triedy. Pretože pri použití statickej metódy nie sú prístupné žiadne objekty. Statická metóda nemá prístup k premenným inštancie. Výsledkom je, že statická metóda nemôže získať prístup k premennej inštancie triedy.

Java






// 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();> >}> }>

>

java regex pre
>

Výkon

40 50 40>

Príklad 2: Pri statických aj nestatických metódach sa priamo pristupuje k statickým metódam.

Java




// 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ýkon

static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>

Prečo používať statické metódy?

  1. Na prístup a zmenu statických premenných a iných statických metód, ktoré nie sú založené na objektoch.
  2. Užitočné a pomocné triedy často využívajú statické metódy.

Obmedzenia v statických metódach:

  1. Nestatické dátové členy alebo nestatické metódy nemôžu byť použité statickými metódami a statické metódy nemôžu volať nestatické metódy priamo.
  2. V statickom prostredí nie je povolené používať tento a super.

Prečo? je hlavná metóda v Jave statický?

Je to preto, že volanie statickej metódy nie je potrebné pre objekt. Ak by to bola nestatická funkcia, JVM by najprv vytvoril objekt pred volaním metódy main(), čo by malo za následok ďalší problém s alokáciou pamäte.

Rozdiel medzi statickou metódou a inštanciou

Metódy inštancie

Statické metódy

Vyžaduje objekt triedy. Nevyžaduje objekt triedy.
Má prístup ku všetkým atribútom triedy. Má prístup iba k statickému atribútu triedy.
K metódam je možné pristupovať iba pomocou odkazu na objekt. Metóda je prístupná iba podľa názvu triedy.
Syntax: Objref.methodname() Syntax: className.methodname()
Je to príklad programovania prechodovej hodnoty. Je to príklad prechodového programovania.