I den här artikeln ska vi lära oss om statiska metoder och instansmetoder i Java.
Java-instansmetoder
Instansmetoder är metoder som kräver att ett objekt av dess klass skapas innan det kan anropas. För att anropa en instansmetod måste vi skapa ett objekt av klassen där metoden är definierad.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Minnestilldelning av instansmetoden
Dessa metoder i sig lagras i utrymmet Permanent Generation av högen (endast giltig till Java 7, nu ersatt med metaspace från Java 8 och framåt med förbättrad effektivitet) men parametrarna (argument som skickas till dem) och deras lokala variabler och värdet till returneras tilldelas i stack. De kan anropas inom samma klass som de finns i eller från de olika klasserna definierade antingen i samma paket eller andra paket beroende på åtkomsttyp tillhandahålls till den önskade instansmetoden.
char till strängjava
Viktiga punkter:
- Instansmetoder tillhör klassens objekt, inte klassen, dvs de kan anropas efter att klassens objekt skapats.
- Instansmetoder lagras inte per instans, inte ens med virtuella metoder. De lagras på en enda minnesplats och de vet bara vilket objekt de tillhör eftersom den här pekaren skickas när du anropar dem.
- De kan åsidosättas eftersom de löses med hjälp av dynamisk bindning vid körning.
Nedan är implementeringen av åtkomst till 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);> > }> }> |
java få aktuell tid
>
>Produktion
techcodeview.com>
Java statiska metoder
Statiska metoder är de metoder i Java som kan anropas utan att skapa ett klassobjekt. De refereras av klassnamnet i sig eller referens till objektet för den klassen.
onclick javascript
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.>
Minnestilldelning av statiska metoder
De lagras i Permanent Generation-utrymmet av heap eftersom de är associerade med klassen där de finns och inte till objekten i den klassen. Men deras lokala variabler och de(n) skickade argumenten till dem lagras i stacken. Eftersom de tillhör klassen, så kan de kallas till utan att skapa objektet för klassen.
Viktiga punkter:
- Statiska metoder är associerade med klassen där de finns, dvs de anropas utan att skapa en instans av klassen, dvs. ClassName.methodName(args) .
- De är designade med syftet att delas mellan alla objekt skapade från samma klass.
- Statiska metoder kan inte åsidosättas, eftersom de löses med hjälp av statisk bindning av kompilatorn vid kompileringstillfället. Däremot kan vi ha samma namnmetoder deklarerade statisk i båda superklass och underklass , men det kommer att heta Metod att dölja eftersom den härledda klassmetoden kommer att dölja basklassmetoden.
Nedan är illustrationen för att komma åt de statiska metoderna:
Java
edith mack hirsch
ascii av a i 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);> > }> }> |
>
>Produktion
vaibhav mohit>
Notera:
Statiska variabler och deras värden (primitiver eller referenser) definierade i klassen lagras i PermGen minnesutrymme.
Vanliga frågor
1. Vad händer om statisk variabel refererar till ett objekt?
static int i = 1; static Object obj = new Object();>På den första raden skulle värdet 1 lagras i PermGen-sektionen. På andra raden skulle referensobjektet lagras i PermGen-sektionen och objektet som det refererar till skulle lagras i heap-sektionen.
2. När ska man använda statiska metoder?
- När du har kod som kan delas mellan alla instanser av samma klass, lägg in den delen av koden i statisk metod.
- De används i princip för att komma åt statiska fält i klassen.
3. Skillnaden mellan instansmetod och statisk metod
- Instansmetoden kan komma åt instansmetoderna och instansvariablerna direkt.
- Instansmetoden kan komma åt statiska variabler och statiska metoder direkt.
- Statiska metoder kan komma åt statiska variabler och statiska metoder direkt.
- Statiska metoder kan inte komma åt instansmetoder och instansvariabler direkt. De måste använda referens till objekt. Och statisk metod kan inte användas detta sökord eftersom det inte finns någon instans för 'detta' att referera till.