In diesem Artikel lernen wir statische Methoden und Instanzmethoden in Java kennen.
Java-Instanzmethoden
Instanzmethoden sind Methoden, die die Erstellung eines Objekts seiner Klasse erfordern, bevor es aufgerufen werden kann. Um eine Instanzmethode aufzurufen, müssen wir ein Objekt der Klasse erstellen, in der die Methode definiert ist.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Speicherzuweisung der Instanzmethode
Diese Methoden selbst werden im permanenten Generierungsraum des Heaps gespeichert (gültig nur bis Java 7, jetzt mit verbesserter Effizienz durch Metaraum ab Java 8 ersetzt), aber die Parameter (an sie übergebene Argumente) und ihre lokalen Variablen und der Wert an zurückgegeben werden, werden im Stapel zugewiesen. Sie können innerhalb derselben Klasse aufgerufen werden, in der sie sich befinden, oder von verschiedenen Klassen, die entweder im selben Paket oder je nach Paket in anderen Paketen definiert sind Zugangsart der gewünschten Instanzmethode bereitgestellt.
Wichtige Punkte:
wie man das Skript unter Linux ausführt
- Instanzmethoden gehören zum Objekt der Klasse, nicht zur Klasse, d. h. sie können aufgerufen werden, nachdem das Objekt der Klasse erstellt wurde.
- Instanzmethoden werden nicht auf Instanzbasis gespeichert, auch nicht bei virtuellen Methoden. Sie werden an einem einzigen Speicherort gespeichert und wissen nur, zu welchem Objekt sie gehören, weil dieser Zeiger übergeben wird, wenn Sie sie aufrufen.
- Sie können überschrieben werden, da sie mit aufgelöst werden Dynamische Bindung zur Laufzeit.
Nachfolgend finden Sie die Implementierung des Zugriffs auf die Instanzmethode:
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);> > }> }> |
>
>Ausgabe
techcodeview.com>
Statische Java-Methoden
Statische Methoden sind Methoden in Java, die aufgerufen werden können, ohne ein Klassenobjekt zu erstellen. Sie werden durch die referenziert Klassenname selbst oder Verweis auf das Objekt dieser Klasse.
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.>
Speicherzuweisung statischer Methoden
Sie werden im permanenten Generierungsraum des Heapspeichers gespeichert, da sie mit der Klasse verknüpft sind, in der sie sich befinden, und nicht mit den Objekten dieser Klasse. Aber ihre lokalen Variablen und die an sie übergebenen Argumente werden im Stapel gespeichert. Da sie zur Klasse gehören, können sie aufgerufen werden, ohne das Objekt der Klasse zu erstellen.
Konvertieren Sie String in Int
Wichtige Punkte:
- Statische Methoden sind mit der Klasse verknüpft, in der sie sich befinden, d. h. sie werden aufgerufen, ohne eine Instanz der Klasse zu erstellen, d. h ClassName.methodName(args) .
- Sie sind mit dem Ziel konzipiert, von allen Objekten, die aus derselben Klasse erstellt wurden, gemeinsam genutzt zu werden.
- Statische Methoden können nicht überschrieben werden, da sie mit aufgelöst werden statische Bindung vom Compiler zur Kompilierungszeit. Wir können jedoch Methoden mit demselben Namen deklarieren statisch sowohl Superklasse Und Unterklasse , aber es wird aufgerufen Methodenversteck da die Methode der abgeleiteten Klasse die Methode der Basisklasse verbirgt.
Nachfolgend finden Sie eine Abbildung zum Zugriff auf die statischen Methoden:
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);> > }> }> |
>
>
Nat vs. BettAusgabe
vaibhav mohit>
Notiz:
In der Klasse definierte statische Variablen und ihre Werte (Primitive oder Referenzen) werden in gespeichert PermGen Raum der Erinnerung.
Häufig gestellte Fragen
1. Was passiert, wenn eine statische Variable auf ein Objekt verweist?
static int i = 1; static Object obj = new Object();>In der ersten Zeile würde der Wert 1 im Abschnitt PermGen gespeichert. In der zweiten Zeile würde das Referenzobjekt im PermGen-Abschnitt und das Objekt, auf das es verweist, im Heap-Abschnitt gespeichert.
2. Wann werden statische Methoden verwendet?
- Wenn Sie Code haben, der von allen Instanzen derselben Klasse gemeinsam genutzt werden kann, fügen Sie diesen Teil des Codes in eine statische Methode ein.
- Sie werden im Wesentlichen verwendet, um auf statische Felder der Klasse zuzugreifen.
3. Unterschied zwischen der Instanzmethode und der statischen Methode
- Die Instanzmethode kann direkt auf die Instanzmethoden und Instanzvariablen zugreifen.
- Instanzmethoden können direkt auf statische Variablen und statische Methoden zugreifen.
- Statische Methoden können direkt auf statische Variablen und statische Methoden zugreifen.
- Statische Methoden können nicht direkt auf Instanzmethoden und Instanzvariablen zugreifen. Sie müssen einen Verweis auf das Objekt verwenden. Und die statische Methode kann nicht verwendet werden Das Schlüsselwort, da es keine Instanz gibt, auf die sich „this“ beziehen könnte.