In dit artikel gaan we leren over statische methoden en instantiemethoden in Java.
Java-instantiemethoden
Instance-methoden zijn methoden waarbij een object van zijn klasse moet worden gemaakt voordat het kan worden aangeroepen. Om een instantiemethode aan te roepen, moeten we een object maken van de klasse waarin de methode is gedefinieerd.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Methode voor geheugentoewijzing van instantie
Deze methoden zelf worden opgeslagen in de Permanent Generation-ruimte van de heap (alleen geldig tot Java 7, nu vervangen door metaspace vanaf Java 8 en later met verbeterde efficiëntie), maar de parameters (argumenten die aan hen worden doorgegeven) en hun lokale variabelen en de waarde ervan worden geretourneerd, worden in de stapel toegewezen. Ze kunnen worden aangeroepen binnen dezelfde klasse waarin ze zich bevinden of vanuit de verschillende klassen die in hetzelfde pakket of in andere pakketten zijn gedefinieerd, afhankelijk van de Toegangstype opgegeven voor de gewenste instantiemethode.
Belangrijke punten:
- Instantiemethode(n) behoren tot het object van de klasse, niet tot de klasse, dat wil zeggen dat ze kunnen worden aangeroepen nadat het object van de klasse is gemaakt.
- Instantiemethoden worden niet per exemplaar opgeslagen, zelfs niet bij virtuele methoden. Ze worden opgeslagen op een enkele geheugenlocatie en ze weten alleen bij welk object ze horen, omdat deze aanwijzer wordt doorgegeven wanneer je ze belt.
- Ze kunnen worden overschreven omdat ze worden opgelost met behulp van dynamische binding tijdens runtime.
Hieronder vindt u de implementatie van toegang tot de instantiemethode:
numpy lijnruimte
Java
bin naar bcd
// 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);> > }> }> |
>
>Uitvoer
techcodeview.com>
Java statische methoden
Statische methoden zijn de methoden in Java die kunnen worden aangeroepen zonder een klasseobject te maken. Er wordt naar verwezen door de klassenaam zelf of verwijzing naar het object van die klasse.
java string vervangen
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.>
Geheugentoewijzing van statische methoden
Ze worden opgeslagen in de permanente generatieruimte van heap, omdat ze geassocieerd zijn met de klasse waarin ze zich bevinden, en niet met de objecten van die klasse. Maar hun lokale variabelen en de doorgegeven argumenten worden in de stapel opgeslagen. Omdat ze tot de klasse behoren, kunnen ze worden aangeroepen zonder het object van de klasse te creëren.
Belangrijke punten:
- Statische methode(s) zijn geassocieerd met de klasse waarin ze zich bevinden, d.w.z. ze worden aangeroepen zonder een instantie van de klasse te creëren, d.w.z. Klassenaam.methodenaam(args) .
- Ze zijn ontworpen met het doel om te worden gedeeld met alle objecten die uit dezelfde klasse zijn gemaakt.
- Statische methoden kunnen niet worden overschreven, omdat ze worden opgelost met behulp van statische binding door de compiler tijdens het compileren. We kunnen echter methoden met dezelfde naam laten declareren statisch in beide superklasse En subklasse , maar het wordt gebeld Methode Verbergen omdat de afgeleide klassenmethode de basisklassemethode zal verbergen.
Hieronder ziet u de illustratie van toegang tot de statische methoden:
binaire boom versus binaire zoekboom
Java
lijstknooppunt in 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);> > }> }> |
>
>Uitvoer
vaibhav mohit>
Opmerking:
Statische variabelen en hun waarden (primitieven of referenties) die in de klasse zijn gedefinieerd, worden opgeslagen in PermGen ruimte van geheugen.
Veel Gestelde Vragen
1. Wat als een statische variabele naar een object verwijst?
static int i = 1; static Object obj = new Object();>In de eerste regel zou de waarde 1 worden opgeslagen in de PermGen-sectie. Op de tweede regel zou het referentieobject worden opgeslagen in de PermGen-sectie en het object waarnaar het verwijst, zou worden opgeslagen in de heap-sectie.
2. Wanneer statische methoden gebruiken?
- Als u code hebt die kan worden gedeeld door alle instanties van dezelfde klasse, plaatst u dat deel van de code in de statische methode.
- Ze worden in principe gebruikt om toegang te krijgen tot statische velden van de klasse.
3. Verschil tussen instancemethode en statische methode
- De instancemethode heeft rechtstreeks toegang tot de instancemethoden en instancevariabelen.
- De instancemethode heeft rechtstreeks toegang tot statische variabelen en statische methoden.
- Statische methoden hebben rechtstreeks toegang tot de statische variabelen en statische methoden.
- Statische methoden hebben geen directe toegang tot instantiemethoden en instantievariabelen. Ze moeten een verwijzing naar een object gebruiken. En de statische methode kan niet worden gebruikt dit trefwoord omdat er geen instantie is waar ‘dit’ naar verwijst.