Différence entre les variables statiques et finales en Java

Rupam Yadav 12 octobre 2023
  1. Variables statiques en Java
  2. Variables finales en Java
Différence entre les variables statiques et finales en Java

Ce tutoriel montre les différences entre les mots-clés static et final. Discutons des différences dans un format tabulaire et des exemples de travail.

static final
L’initialisation d’une variable statique n’est pas nécessaire lors de la déclaration. Il est nécessaire d’initialiser une variable finale lors de sa déclaration.
Les variables statiques peuvent être réinitialisées Les variables finales ne peuvent pas être réinitialisées.
Il est utilisé avec des classes statiques imbriquées, des variables, des méthodes et des blocs. Il est utilisé avec la classe, les méthodes et les variables.
Les méthodes statiques ne peuvent être appelées que par d’autres méthodes statiques. Les méthodes finales ne peuvent pas être remplacées par des sous-classes.

Variables statiques en Java

Lorsque nous créons une variable statique ou une méthode, elle est attachée à la classe et non à l’objet. La variable ou la méthode partagera la même référence pour l’ensemble du programme.

Le programme suivant possède une classe DummyClass contenant une variable statique num et une méthode statique appelée dummyMethod(). Pour accéder à ces deux membres depuis une autre classe, on ne peut pas créer un objet de la DummyClass car ils sont statiques.

Nous les appelons directement en utilisant le nom de la classe.

Exemple:

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");
  }
}

Production:

Static variable value : 5 Inside Static Dummy Method

Classe imbriquée utilisant le mot-clé static sans référence à la classe externe. Nous pouvons créer une classe interne à l’intérieur d’une classe en utilisant le mot-clé static.

Dans l’exemple ci-dessous, nous avons une classe DummyClass, et à l’intérieur de celle-ci, nous créons une classe statique appelée InnerClass, et dans cette classe, nous créons une méthode dummyMethod().

Maintenant dans la classe ExampleClass3, nous obtenons la InnerClass en utilisant DummyClass.InnerClass et créons un objet de la classe DummyClass et appelons la fonction dummyMethod().

Exemple:

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");
    }
  }
}

Production:

Inside Static Dummy Method Of The Inner Static Class

Variables finales en Java

Une variable finale ne peut pas être modifiée une fois qu’elle est initialisée. L’exemple montre que si nous créons une variable finale puis essayons de la réinitialiser, nous obtenons une erreur dans la sortie.

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

Production:

java : cannot assign a value to final variable num

Une autre classe ne peut prolonger une classe final. L’utilisation du mot-clé final lors de la création d’une classe empêche la classe d’être héritée par une autre classe.

Exemple:

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");
  }
}

Production:

java : cannot inherit from final com.tutorial.DummyClass

On ne peut pas redéfinir une méthode final dans une sous-classe. Comme une classe finale, si une fonction utilise le mot-clé final, elle ne peut pas être surchargée par ses sous-classes.

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");
  }
}

Production:

java : dummyMethod() in com.tutorial.DummyClass2 cannot override
       dummyMethod() in com.tutorial.DummyClass overridden method is final
Auteur: Rupam Yadav
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

Article connexe - Java Variable