logo

Statične metode proti metodam primerkov v Javi

V tem članku se bomo seznanili s statičnimi metodami in metodami primerkov v Javi.

Metode primerkov Java

Metode primerkov so metode, ki zahtevajo, da je predmet njegovega razreda ustvarjen, preden ga je mogoče poklicati. Za priklic metode primerka moramo ustvariti objekt razreda, v katerem je metoda definirana.



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

Metoda dodeljevanja pomnilnika primerka

Te metode same so shranjene v prostoru za stalno generiranje kopice (velja samo do Jave 7, zdaj nadomeščene z metaprostorom od Jave 8 in naprej z izboljšano učinkovitostjo), vendar parametri (argumenti, ki so jim posredovani) in njihove lokalne spremenljivke ter vrednost za vrnjeni so dodeljeni v skladu. Kličejo jih lahko znotraj istega razreda, v katerem prebivajo, ali iz različnih razredov, definiranih v istem paketu ali drugih paketih, odvisno od vrsta dostopa na voljo želeni metodi primerka.

Pomembne točke:

  • Metoda(-e) primerka pripada(-jo) objektu razreda, ne razredu, kar pomeni, da jih je mogoče poklicati po ustvarjanju predmeta razreda.
  • Metode primerkov niso shranjene za posamezen primerek, tudi pri virtualnih metodah. Shranjeni so na eni pomnilniški lokaciji in vedo le, kateremu objektu pripadajo, ker je ta kazalec posredovan, ko jih pokličete.
  • Lahko jih preglasite, ker so razrešeni z uporabo dinamična vezava v času izvajanja.

Spodaj je izvedba dostopa do metode primerka:



Java


moj živi kriket





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

>

>

Izhod

techcodeview.com>

Statične metode Java

Statične metode so metode v Javi, ki jih je mogoče poklicati, ne da bi ustvarili objekt razreda. Nanje se sklicuje samo ime razreda ali sklicevanje na predmet tega razreda.

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.>

Dodeljevanje pomnilnika statičnim metodam

Shranjeni so v prostoru stalne generacije kopice, saj so povezani z razredom, v katerem se nahajajo, in ne z objekti tega razreda. Toda njihove lokalne spremenljivke in njim posredovani argumenti so shranjeni v skladu. Ker pripadajo razredu, jih je mogoče poklicati brez ustvarjanja predmeta razreda.

Pomembne točke:

  • Statične metode so povezane z razredom, v katerem se nahajajo, tj. klicane so brez ustvarjanja primerka razreda, tj. ClassName.methodName(args) .
  • Zasnovani so tako, da jih delijo vsi objekti, ustvarjeni iz istega razreda.
  • Statičnih metod ni mogoče preglasiti, ker so razrešene z uporabo statična vezava prevajalnik v času prevajanja. Lahko pa imamo deklarirane metode z enakim imenom statična V obeh nadrazred in podrazred , vendar se bo imenovalo Skrivanje metode saj bo metoda izpeljanega razreda skrila metodo osnovnega razreda.

Spodaj je ilustracija dostopa do statičnih metod:

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

>

>

Izhod

vaibhav mohit>

Opomba:

Statične spremenljivke in njihove vrednosti (primitivne ali reference), definirane v razredu, so shranjene v PermGen prostor spomina.

nedefiniran naklon

Pogosto zastavljena vprašanja

1. Kaj, če se statična spremenljivka nanaša na objekt?

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

V prvi vrstici bi bila vrednost 1 shranjena v razdelku PermGen. V drugi vrstici bi bil referenčni obj shranjen v razdelku PermGen, predmet, na katerega se nanaša, pa v razdelku kopice.

2. Kdaj uporabiti statične metode?

  • Ko imate kodo, ki jo je mogoče deliti z vsemi primerki istega razreda, vstavite ta del kode v statično metodo.
  • V osnovi se uporabljajo za dostop do statičnih polj razreda.

3. Razlika med metodo primerka in statično metodo

  • Metoda primerka lahko neposredno dostopa do metod in spremenljivk primerka.
  • Metoda primerka lahko neposredno dostopa do statičnih spremenljivk in statičnih metod.
  • Statične metode lahko neposredno dostopajo do statičnih spremenljivk in statičnih metod.
  • Statične metode ne morejo neposredno dostopati do metod primerka in spremenljivk primerka. Uporabiti morajo sklicevanje na predmet. In statične metode ni mogoče uporabiti to ključno besedo, saj ni nobenega primera za 'to', na katerega bi se nanašal.