Het statische sleutelwoord wordt gebruikt om methoden te construeren die zullen bestaan, ongeacht of er wel of geen instances van de klasse worden gegenereerd. Elke methode die het statische trefwoord gebruikt, wordt een statische methode genoemd.
Kenmerken van statische methode:
- Een statische methode in Java is een methode die deel uitmaakt van een klasse en niet een instantie van die klasse.
- Elke instantie van een klasse heeft toegang tot de methode.
- Statische methoden hebben toegang tot klassevariabelen (statische variabelen) zonder het object (instance) van de klasse te gebruiken.
- Alleen statische gegevens zijn toegankelijk via een statische methode. Het heeft geen toegang tot gegevens die niet statisch zijn (instantievariabelen).
- Bij zowel statische als niet-statische methoden zijn statische methoden rechtstreeks toegankelijk.
Syntaxis voor het declareren van de statische methode:
Access_modifier static void methodName() { // Method body. }> De naam van de klasse kan worden gebruikt om statische methoden aan te roepen of er toegang toe te krijgen.
Syntaxis voor het aanroepen van een statische methode:
className.methodName();>
Voorbeeld 1: De statische methode heeft geen toegang tot de instantievariabele
De JVM voert eerst de statische methode uit, gevolgd door het maken van klasse-instanties. Omdat er geen objecten toegankelijk zijn wanneer de statische methode wordt gebruikt. Een statische methode heeft geen toegang tot instantievariabelen. Als gevolg hiervan heeft een statische methode geen toegang tot de instantievariabele van een klasse.
anaconda versus pythonslang
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();> >}> }> |
als anders als java
>
>Uitvoer
40 50 40>
Voorbeeld 2: Bij zowel statische als niet-statische methoden zijn statische methoden rechtstreeks toegankelijk.
Java
c++ gesplitste tekenreeks
// 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();> >}> }> |
>
>
tekenreeks.formaatUitvoer
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
Waarom statische methoden gebruiken?
- Voor toegang tot en wijziging van statische variabelen en andere niet-objectgebaseerde statische methoden.
- Hulpprogramma's en assistentieklassen maken vaak gebruik van statische methoden.
Beperkingen in statische methoden:
- Niet-statische gegevensleden of niet-statische methoden kunnen niet door statische methoden worden gebruikt, en statische methoden kunnen niet-statische methoden niet rechtstreeks aanroepen.
- In een statische omgeving mogen this en super niet worden gebruikt.
Waarom is de belangrijkste methode in Java statisch?
Dit komt omdat het aanroepen van een statische methode niet nodig is voor het object. Als het een niet-statische functie zou zijn, zou JVM eerst een object bouwen voordat de methode main() wordt aangeroepen, wat resulteert in een extra moeilijkheid bij het toewijzen van geheugen.
Verschil tussen de statische methode en de instantiemethode
| Instantiemethoden | Statische methoden |
|---|---|
| Het vereist een object van de klasse. | Er is geen object van de klasse vereist. |
| Het heeft toegang tot alle attributen van een klasse. | Het heeft alleen toegang tot het statische attribuut van een klasse. |
| De methoden zijn alleen toegankelijk via objectreferentie. | De methode is alleen toegankelijk via de klassenaam. |
| Syntaxis: Objref.methodenaam() | Syntaxis: klassenaam.methodenaam() |
| Het is een voorbeeld van pass-by-value-programmering. | Het is een voorbeeld van pass-by-reference-programmering. |