logo

Statiske metoder vs instansmetoder i Java

I denne artikkelen skal vi lære om statiske metoder og instansmetoder i Java.

Java-forekomstmetoder

Forekomstmetoder er metoder som krever at et objekt av klassen opprettes før det kan kalles. For å påkalle en instansmetode, må vi lage et objekt av klassen som metoden er definert i.

public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>

Minnetildeling av instansmetode

Disse metodene i seg selv er lagret i Permanent Generation-rommet til haugen (kun gyldig til Java 7, nå erstattet med metaspace fra Java 8 og utover med forbedret effektivitet), men parametrene (argumentene sendt til dem) og deres lokale variabler og verdien til returneres er tildelt i stabel. De kan kalles innenfor samme klasse som de er hjemmehørende i eller fra de forskjellige klassene definert enten i samme pakke eller andre pakker avhengig av tilgangstype gitt til den ønskede instansmetoden.



Viktige punkter:

  • Forekomstmetode(r) tilhører objektet til klassen, ikke klassen, det vil si at de kan kalles etter å ha opprettet objektet til klassen.
  • Forekomstmetoder lagres ikke per forekomst, selv med virtuelle metoder. De er lagret på en enkelt minneplassering, og de vet bare hvilket objekt de tilhører fordi denne pekeren sendes når du kaller dem.
  • De kan overstyres siden de er løst ved hjelp av dynamisk binding på kjøretid.

Nedenfor er implementeringen av tilgang til instansmetoden:

Java




// Example to illustrate accessing the instance method .> import> java.io.*;> class> Foo {> >String name =>''>;> >// Instance method to be called within the> >// same class or from a another class defined> >// in the same package or in different package.> >public> void> geek(String name) {>this>.name = name; }> }> class> GFG {> >public> static> void> main(String[] args)> >{> >// create an instance of the class.> >Foo ob =>new> Foo();> >// calling an instance method in the class 'Foo'.> >ob.geek(>'techcodeview.com'>);> >System.out.println(ob.name);> >}> }>

>

>

Produksjon

techcodeview.com>

Java statiske metoder

Statiske metoder er metodene i Java som kan kalles uten å lage et objekt av klasse. De er referert av selve klassenavnet eller referanse til objektet til den klassen.

public static void geek(String name) { // code to be executed.... } // Must have static modifier in their declaration. // Return type can be int, float, String or user defined data type.>

Minnetildeling av statiske metoder

De lagres i Permanent Generation-området i haugen ettersom de er assosiert med klassen de befinner seg i, ikke til objektene til den klassen. Men deres lokale variabler og argumentene som sendes til dem er lagret i stabelen. Siden de tilhører klassen, kan de kalles til uten å lage objektet til klassen.

Viktige punkter:

  • Statiske metoder er assosiert med klassen de ligger i, dvs. de kalles uten å opprette en forekomst av klassen, dvs. Klassenavn.metodeNavn(args) .
  • De er designet med sikte på å deles mellom alle objekter laget fra samme klasse.
  • Statiske metoder kan ikke overstyres, siden de løses ved hjelp av statisk binding av kompilatoren på kompileringstidspunktet. Imidlertid kan vi ha de samme navnemetodene deklarert statisk i begge superklasse og underklasse , men det vil bli kalt Metode skjuler som den avledede klassemetoden vil skjule basisklassemetoden.

Nedenfor er illustrasjonen av tilgang til de statiske metodene:

Java




// Example to illustrate Accessing> // the Static method(s) of the class.> import> java.io.*;> class> Geek {> >public> static> String geekName =>''>;> >public> static> void> geek(String name)> >{> >geekName = name;> >}> }> class> GFG {> >public> static> void> main(String[] args)> >{> >// Accessing the static method geek()> >// and field by class name itself.> >Geek.geek(>'vaibhav'>);> >System.out.println(Geek.geekName);> >// Accessing the static method geek()> >// by using Object's reference.> >Geek obj =>new> Geek();> >obj.geek(>'mohit'>);> >System.out.println(obj.geekName);> >}> }>

>

>

jframe
Produksjon

vaibhav mohit>

Merk:

Statiske variabler og deres verdier (primitiver eller referanser) definert i klassen er lagret i PermGen plass av minne.

ofte stilte spørsmål

1. Hva om statisk variabel refererer til et objekt?

static int i = 1; static Object obj = new Object();>

I den første linjen vil verdien 1 bli lagret i PermGen-delen. I andre linje vil referanseobjektet bli lagret i PermGen-seksjonen og objektet det refererer til vil bli lagret i heap-seksjonen.

2. Når skal man bruke statiske metoder?

  • Når du har kode som kan deles på tvers av alle forekomster av samme klasse, setter du den delen av koden inn i statisk metode.
  • De brukes i utgangspunktet for å få tilgang til statiske felt(er) i klassen.

3. Forskjellen mellom instansmetode og statisk metode

  • Forekomstmetoden kan få direkte tilgang til forekomstmetodene og forekomstvariablene.
  • Forekomstmetoden kan få direkte tilgang til statiske variabler og statiske metoder.
  • Statiske metoder kan få direkte tilgang til statiske variabler og statiske metoder.
  • Statiske metoder har ikke direkte tilgang til instansmetoder og instansvariabler. De må bruke referanse til objekt. Og statisk metode kan ikke brukes dette søkeord siden det ikke er noen forekomst for 'dette' å referere til.