logo

Staattiset menetelmät vs. ilmentymämenetelmät Javassa

Tässä artikkelissa aiomme oppia staattisista menetelmistä ja ilmentymämenetelmistä Javassa.

Java-instanssimenetelmät

Ilmentymämenetelmät ovat menetelmiä, jotka edellyttävät luokkansa objektin luomista ennen kuin sitä voidaan kutsua. Instanssimenetelmän kutsumiseksi meidän on luotava Object luokasta, jossa menetelmä on määritelty.

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

Instanssien muistin allokointimenetelmä

Nämä menetelmät itsessään tallennetaan keon Permanent Generation -avaruuteen (voimassa vain Java 7:ään asti, nyt korvattu metaavaruudella Java 8:sta ja eteenpäin parannetulla tehokkuudella), mutta parametrit (niille välitetyt argumentit) ja niiden paikalliset muuttujat ja arvo palautettavat jaetaan pinossa. Niitä voidaan kutsua samassa luokassa, jossa ne asuvat, tai eri luokista, jotka on määritelty joko samassa paketissa tai muissa paketeissa riippuen pääsyn tyyppi toimitetaan haluttuun tapausmenetelmään.



Tärkeitä kohtia:

  • Ilmentymämetodi(t) kuuluvat luokan Objectiin, eivät luokkaan, eli niitä voidaan kutsua luokan Objectin luomisen jälkeen.
  • Ilmentymämenetelmiä ei tallenneta ilmentymäkohtaisesti edes virtuaalisilla menetelmillä. Ne on tallennettu yhteen muistipaikkaan, ja he tietävät vain mihin objektiin ne kuuluvat, koska tämä osoitin välitetään, kun soitat heille.
  • Ne voidaan ohittaa, koska ne on ratkaistu käyttämällä dynaaminen sidonta ajon aikana.

Alla on ilmentymämenetelmän käyttämisen toteutus:

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

ssh täysi muoto

>

>

Lähtö

techcodeview.com>

Java Staattiset menetelmät

Staattiset menetelmät ovat Java-menetelmiä, joita voidaan kutsua luomatta luokan objektia. Niihin viitataan itse luokan nimi tai viittaus kyseisen luokan objektiin.

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

Staattisten menetelmien muistin allokointi

Ne tallennetaan kasan Pysyvän sukupolven avaruuteen, koska ne liittyvät luokkaan, jossa ne sijaitsevat, eivät kyseisen luokan objekteihin. Mutta niiden paikalliset muuttujat ja niille välitetyt argumentit tallennetaan pinoon. Koska ne kuuluvat luokkaan, niitä voidaan kutsua luomatta luokan objektia.

median siirto

Tärkeitä kohtia:

  • Staattiset menetelmät liitetään luokkaan, jossa ne sijaitsevat, eli niitä kutsutaan luomatta luokan esiintymää, ts. ClassName.methodName(args) .
  • Ne on suunniteltu jaettavaksi kaikkien samasta luokasta luotujen objektien kesken.
  • Staattisia menetelmiä ei voi ohittaa, koska ne ratkaistaan ​​käyttämällä staattinen sidonta kääntäjä käännöshetkellä. Meillä voidaan kuitenkin ilmoittaa samannimiset menetelmät staattinen molemmissa superluokka ja alaluokka , mutta sitä kutsutaan Menetelmä piilottaminen koska johdettu luokkamenetelmä piilottaa perusluokan menetelmän.

Alla on kuva staattisten menetelmien käyttämisestä:

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

>

>

Lähtö

vaibhav mohit>

Huomautus:

Luokassa määritellyt staattiset muuttujat ja niiden arvot (primitiivit tai viittaukset) tallennetaan PermGen muistin tilaa.

Usein Kysytyt Kysymykset

1. Entä jos staattinen muuttuja viittaa objektiin?

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

Ensimmäisellä rivillä arvo 1 tallennettaisiin PermGen-osioon. Toisella rivillä viiteobjekti tallennettaisiin PermGen-osioon ja objekti, johon se viittaa, tallennettaisiin kaso-osioon.

2. Milloin staattisia menetelmiä käytetään?

  • Kun sinulla on koodia, joka voidaan jakaa saman luokan kaikille esiintymille, aseta kyseinen koodin osa staattiseen menetelmään.
  • Niitä käytetään periaatteessa luokan staattisten kenttien käyttämiseen.

3. Ero instanssimenetelmän ja staattisen menetelmän välillä

  • Ilmentymämenetelmällä pääsee suoraan ilmentymämenetelmiin ja ilmentymän muuttujiin.
  • Instanssimenetelmällä pääsee suoraan staattisiin muuttujiin ja staattisiin menetelmiin.
  • Staattiset menetelmät voivat päästä suoraan staattisiin muuttujiin ja staattisiin menetelmiin.
  • Staattiset menetelmät eivät voi käyttää ilmentymän menetelmiä ja ilmentymämuuttujia suoraan. Niiden on käytettävä viittausta objektiin. Ja staattista menetelmää ei voi käyttää Tämä avainsana, koska 'tällä' ei ole esiintymää, johon viitata.