Unterschied zwischen statischer und nicht statischer Methode in Java
Was ist eine statische Methode?:
Eine statische Methode ist eine Methode, die zu einer Klasse gehört, aber nicht zu einer Instanz dieser Klasse, und diese Methode kann ohne die Instanz oder das Objekt dieser Klasse aufgerufen werden.
Was ist eine nichtstatische Methode?:
Jede Methode in Java ist standardmäßig eine nichtstatische Methode ohne vorangestelltes statisches Schlüsselwort. Nicht statische Methoden können auf jede statische Methode und statische Variable zugreifen, ohne eine Instanz des Objekts zu erstellen.
Nachfolgend sind die verschiedenen wichtigen Unterschiede zwischen diesen aufgeführt:
- Zugriff auf Mitglieder und Methoden:
- Bei statischen Methoden kann die Methode nur auf statische Datenelemente und statische Methoden einer anderen Klasse oder derselben Klasse zugreifen, aber nicht auf nicht statische Methoden und Variablen. Auch eine statische Methode kann die Werte jedes statischen Datenelements umschreiben.
- Bei nicht statischen Methoden kann die Methode auf statische Datenelemente und statische Methoden sowie auf nicht statische Elemente und Methoden einer anderen Klasse oder derselben Klasse zugreifen und auch die Werte aller statischen Datenelemente ändern.
- Bei statischen Methoden kann die Methode nur auf statische Datenelemente und statische Methoden einer anderen Klasse oder derselben Klasse zugreifen, aber nicht auf nicht statische Methoden und Variablen. Auch eine statische Methode kann die Werte jedes statischen Datenelements umschreiben.
- Anrufvorgang:
- Bei der statischen Methode ist der Speicher einer statischen Methode im RAM fixiert, aus diesem Grund brauchen wir nicht das Objekt einer Klasse, in der die statische Methode definiert ist, um die statische Methode aufzurufen. Um die Methode aufzurufen, müssen wir den Namen der Methode gefolgt vom Klassennamen schreiben.
- Bei der statischen Methode ist der Speicher einer statischen Methode im RAM fixiert, aus diesem Grund brauchen wir nicht das Objekt einer Klasse, in der die statische Methode definiert ist, um die statische Methode aufzurufen. Um die Methode aufzurufen, müssen wir den Namen der Methode gefolgt vom Klassennamen schreiben.
class GFG{ public static void geek() { } } // calling GFG.geek();
Java
// Java program to call a static method class GFG { // static method public static int sum(int a, int b) { return a + b; } } class Main { public static void main(String[] args) { int n = 3, m = 6; // call the static method int s = GFG.sum(n, m); System.out.print("sum is = " + s); } }
- Ausgabe:
sum is = 9
- Bei der nicht statischen Methode ist der Speicher der nicht statischen Methode nicht im RAM festgelegt, daher benötigen wir ein Klassenobjekt, um eine nicht statische Methode aufzurufen. Um die Methode aufzurufen, müssen wir den Namen der Methode schreiben, gefolgt vom Namen des Klassenobjekts.
class GFG{ public void geek() { } } // creating object GFG g = new GFG(); g.geek(); // calling
Java
// Java program to call a non-static method class GFG { // non-static method public int sum(int a, int b) { return a + b; } } class Main { public static void main(String[] args) { int n = 3, m = 6; GFG g = new GFG(); int s = g.sum(n, m); // call the non-static method System.out.print("sum is = " + s); } }
- Ausgabe:
sum is = 9
- Bindeprozess:
- Bei der statischen Methode verwendet die Methode die Kompilierzeit oder die frühe Bindung. Aus diesem Grund können wir auf die statische Methode zugreifen, ohne eine Instanz zu erstellen.
- Bei nicht statischen Methoden verwendet die Methode die Laufzeit oder die dynamische Bindung. Damit wir nicht auf eine nicht statische Methode zugreifen können, ohne eine Instanz zu erstellen.
- Überschreiben:
- In der statischen Methode können wir eine statische Methode wegen der frühen Bindung nicht überschreiben.
Beispiel:
- In der statischen Methode können wir eine statische Methode wegen der frühen Bindung nicht überschreiben.
Java
// Override of static method class Parent { // static method static void show() { System.out.println("Parent"); } } // Parent inherit in Child class class Child extends Parent { // override show() of Parent void show() { System.out.println("Child"); } } class GFG { public static void main(String[] args) { Parent p = new Parent(); // calling Parent's show() p.show(); // cannot override Parent's show() } }
- Ausgabe:
java:15: error: show() in Child cannot override show() in Parent void show() ^ overridden method is static
- In der nicht statischen Methode können wir eine nicht statische Methode überschreiben. Denn zum Überschreiben benötigen wir Laufzeitpolymorphismus, der nur beim Laufzeitbinding vorkommt.
Beispiel:
Java
// Override of non-static method class Parent { void show() { System.out.println("Parent"); } } // Parent inherit in Child class class Child extends Parent { // override show() of Parent void show() { System.out.println("Child"); } } class GFG { public static void main(String[] args) { Parent p = new Parent(); // calling Parent's show() p.show(); Parent c = new Child(); // calling Child's show() c.show(); } }
- Fehler:
Parent Child
- Speicherzuweisung:
- Bei der statischen Methode erfolgt die Speicherzuweisung nur einmal, da das Schlüsselwort static einen bestimmten Speicher für diese Methode im RAM festgelegt hat. Wenn also die Methode jedes Mal in einem Programm aufgerufen wird, jedes Mal, wenn dieser bestimmte Speicher verwendet wird. Aus diesem Grund wird weniger Speicher zugewiesen.
- Bei der nicht statischen Methode erfolgt hier die Speicherzuweisung, wenn die Methode aufgerufen wird, und der Speicher wird jedes Mal zugewiesen, wenn die Methode aufgerufen wird. Hier wird so viel Speicher verbraucht.
- Bei der statischen Methode erfolgt die Speicherzuweisung nur einmal, da das Schlüsselwort static einen bestimmten Speicher für diese Methode im RAM festgelegt hat. Wenn also die Methode jedes Mal in einem Programm aufgerufen wird, jedes Mal, wenn dieser bestimmte Speicher verwendet wird. Aus diesem Grund wird weniger Speicher zugewiesen.
Differenztabelle:
Punkte | statische Methode | Nicht statische Methode |
---|---|---|
Definition | Eine statische Methode ist eine Methode, die zu einer Klasse gehört, aber nicht zu einer Instanz dieser Klasse, und diese Methode kann ohne die Instanz oder das Objekt dieser Klasse aufgerufen werden. | Alle Methoden in Java sind standardmäßig nicht statische Methoden, denen das statische Schlüsselwort nicht vorangestellt ist. Nicht-statische Methoden können auf jede statische Methode und auch auf statische Variablen zugreifen, ohne das Objekt der Klasse zu verwenden. |
Zugreifen auf Mitglieder und Methoden | Bei einer statischen Methode kann die Methode nur auf statische Datenelemente und statische Methoden einer anderen Klasse oder derselben Klasse zugreifen, aber nicht auf nicht statische Methoden und Variablen. | Bei nicht statischen Methoden kann die Methode auf statische Datenelemente und statische Methoden sowie auf nicht statische Elemente und Methoden einer anderen Klasse oder derselben Klasse zugreifen. |
Bindungsprozess | Die statische Methode verwendet die Kompilierzeit oder die frühe Bindung. | Die nicht statische Methode verwendet Laufzeit- oder dynamische Bindung. |
Überschreiben | Die statische Methode kann aufgrund der frühen Bindung nicht überschrieben werden. | Eine nicht statische Methode kann aufgrund der Laufzeitbindung überschrieben werden. |
Speicherzuweisung | Bei der statischen Methode wird weniger Speicher für die Ausführung verwendet, da die Speicherzuweisung nur einmal erfolgt, da das Schlüsselwort static einen bestimmten Speicher für diese Methode im RAM festgelegt hat. . | Bei nicht statischen Methoden wird viel Speicher für die Ausführung verwendet, da hier die Speicherzuweisung erfolgt, wenn die Methode aufgerufen wird, und der Speicher jedes Mal zugewiesen wird, wenn die Methode aufgerufen wird. |