Unterschied zwischen statischen und finalen Variablen in Java

Rupam Yadav 12 Oktober 2023
  1. Statische Variablen in Java
  2. Finale Variablen in Java
Unterschied zwischen statischen und finalen Variablen in Java

Dieses Tutorial zeigt die Unterschiede zwischen den Keywords static und final. Lassen Sie uns die Unterschiede in tabellarischer Form und anhand von Arbeitsbeispielen diskutieren.

static final
Die Initialisierung einer statischen Variablen ist während der Deklaration nicht erforderlich. Es ist erforderlich, eine finale Variable zu initialisieren, wenn sie deklariert wird.
Statische Variablen können neu initialisiert werden Final-Variablen können nicht reinitialisiert werden.
Es wird mit verschachtelten statischen Klassen, Variablen, Methoden und Blöcken verwendet. Es wird mit Klassen, Methoden und Variablen verwendet.
Statische Methoden können nur von anderen statischen Methoden aufgerufen werden. Endgültige Methoden können nicht von Unterklassen überschrieben werden.

Statische Variablen in Java

Wenn wir eine statische Variable oder eine Methode erstellen, wird sie an die Klasse und nicht an das Objekt angehängt. Die Variable oder Methode teilt die gleiche Referenz für das gesamte Programm.

Das folgende Programm hat eine Klasse DummyClass, die eine statische Variable num und eine statische Methode namens dummyMethod() enthält. Um auf diese beiden Member von einer anderen Klasse aus zuzugreifen, können wir kein Objekt der DummyClass erstellen, da sie statisch sind.

Wir rufen sie direkt mit dem Klassennamen auf.

Beispiel:

public class ExampleClass3 {
  public static void main(String[] args) {
    DummyClass.num = 5;
    System.out.println("Static variable value: " + DummyClass.num);
    DummyClass.dummyMethod();
  }
}

class DummyClass {
  public static int num = 0;

  public static void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

Ausgabe:

Static variable value: 5
Inside Static Dummy Method

Verschachtelte Klasse mit dem Schlüsselwort static ohne Bezug auf die äußere Klasse. Wir können eine innere Klasse innerhalb einer Klasse mit dem Schlüsselwort static erstellen.

Im folgenden Beispiel haben wir eine Klasse DummyClass und darin erstellen wir eine statische Klasse namens InnerClass, und in dieser Klasse erstellen wir eine Methode dummyMethod().

Nun holen wir uns in der Klasse ExampleClass3 die InnerClass mit DummyClass.InnerClass und erstellen ein Objekt der Klasse DummyClass und rufen die Funktion dummyMethod() auf.

Beispiel:

public class ExampleClass3 {
  public static void main(String[] args) {
    DummyClass.InnerClass dummyClassObj = new DummyClass.InnerClass();
    dummyClassObj.dummyMethod();
  }
}

class DummyClass {
  static class InnerClass {
    void dummyMethod() {
      System.out.println("Inside Static Dummy Method Of The Inner Static Class");
    }
  }
}

Ausgabe:

Inside Static Dummy Method Of The Inner Static Class

Finale Variablen in Java

Eine finale Variable kann nicht geändert werden, nachdem sie initialisiert wurde. Das Beispiel zeigt, dass wir einen Fehler in der Ausgabe erhalten, wenn wir eine finale Variable erstellen und dann versuchen, sie neu zu initialisieren.

public class ExampleClass3 {
  public static void main(String[] args) {
    final int num = 0;
    num = 1;
  }
}

Ausgabe:

java: cannot assign a value to final variable num

Eine andere Klasse kann eine final Klasse nicht verlängern. Die Verwendung des Schlüsselworts final beim Erstellen einer Klasse verhindert, dass die Klasse von einer anderen Klasse geerbt wird.

Beispiel:

public class ExampleClass3 {
  public static void main(String[] args) {
    new DummyClass().dummyMethod();
  }
}

final class DummyClass {
  public void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

class DummyClass2 extends DummyClass {
  public void dummyMethod2() {
    System.out.println("Inside Static Dummy Method 2");
  }
}

Ausgabe:

java: cannot inherit from final com.tutorial.DummyClass

Wir können eine final-Methode in einer Unterklasse nicht überschreiben. Wenn eine Funktion das Schlüsselwort final verwendet, kann sie wie eine finale Klasse nicht von ihren Unterklassen überschrieben werden.

public class ExampleClass3 {
  public static void main(String[] args) {
    new DummyClass2().dummyMethod();
  }
}

class DummyClass {
  public final void dummyMethod() {
    System.out.println("Inside Static Dummy Method");
  }
}

class DummyClass2 extends DummyClass {
  public void dummyMethod() {
    System.out.println("Inside Overridden Dummy Method");
  }
}

Ausgabe:

java: dummyMethod() in com.tutorial.DummyClass2 cannot override dummyMethod() in com.tutorial.DummyClass
 overridden method is final
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java Variable