I Java definierar metoder beteendet hos klasser och objekt. Att förstå skillnaden mellan statiska metoder och instansmetoder är viktigt för att skriva ren och effektiv kod.
Vad är en statisk metod?
A statisk metod tillhör klassen snarare än något specifikt objekt.
- Kan anropas utan att skapa en instans av klassen.
- Eftersom statiska metoder är vilka som helst objektspecifika kan de endast komma åt statiska medlemmar (data och metoder) och kan inte komma åt icke-statiska medlemmar.
import java.io.*; class Geeks { // static method public static void greet() { System.out.println('Hello Geek!'); } public static void main(String[] args) { // calling the method directily greet(); // using the class name Geeks.greet(); } }
Produktion
Hello Geek! Hello Geek!
Förklaring: Ovanstående exempel visar en statisk metod greet() i klassen Geeks statiska metoder kan anropas utan att skapa ett objekt. I huvudmetoden skapar vi inte ett objekt av Geek-klassen, vi anropar metoden direkt med klassnamnet som är Geeks och sedan skriver vi ut resultatet.
Vad är en instansmetod?
En Instansmetod tillhör ett föremål.
jframe
- Behöver skapa en instans av klassen att anropa.
- Kan komma åt instansvariabler andra instansmetoder och statiska medlemmar av klassen.
- Har tillgång till
thishänvisning som pekar på det aktuella objektet.
import java.io.*; class Test { String n = ''; // Instance method public void test(String n) { this.n = n; } } class Geeks { public static void main(String[] args) { // create an instance of the class Test t = new Test(); // calling an instance method in the class 'Geeks' t.test('GeeksforGeeks'); System.out.println(t.n); } }
Produktion
GeeksforGeeks
Förklaring: Ovanstående exempel visar hur man använder en instansmetod i Java. Vi skapar ett objekt av klassen Test och anropar testmetoden för att ställa in ett värde och sedan skriver vi ut resultatet.
Skillnaden mellan statisk metod och instansmetod
Följande tabell listar stora skillnader mellan de statiska metoderna och instansmetoderna i Java.
Drag | Statisk metod | Instansmetod jämföra i java |
|---|---|---|
Definition | Skapat med det statiska nyckelordet och hämtat utan att skapa ett objekt. | Kräver att ett objekt i dess klass ska anropas. |
Tillträde | Få endast tillgång till statiska variabler och metoder. | Kan komma åt både statiska och instansmedlemmar. |
| Kan inte använda detta nyckelord inom statiska metoder. | Kan använda detta nyckelord för att referera till det aktuella objektet. |
Åsidosätta | Stöder inte runtime polymorfism | Stöder runtime polymorfism |
Minnestilldelning | Laddas en gång per klass lär dig noggrannhetspoäng | Varje objekt har sin egen kopia |