Maison > Java > javaDidacticiel > Comment le mot clé « final » de Java affecte-t-il la modification des objets ?

Comment le mot clé « final » de Java affecte-t-il la modification des objets ?

DDD
Libérer: 2024-12-15 18:04:14
original
432 Les gens l'ont consulté

How Does Java's `final` Keyword Affect Object Modification?

Fonctionnement du mot-clé "final" en Java (modification d'objets)

En Java, le mot-clé "final" est utilisé pour déclarer des variables avec des valeurs immuables. Cependant, vous pouvez rencontrer des scénarios dans lesquels vous pouvez toujours modifier un objet affecté à une variable finale. Ce comportement nécessite une compréhension plus approfondie des fonctionnalités de final.

Finalité des variables

Variables d'instance :

  • Les variables d'instance finale peuvent être initialisées dans le constructeur.
  • Une fois initialisés, ils ne peuvent pas être réaffectés à un autre objet référence.
  • Cependant, le contenu de l'objet (par exemple, s'il s'agit d'une collection) peut toujours être modifié.

Variables statiques :

  • Les variables statiques finales doivent être initialisées dans la déclaration de classe elle-même.
  • Elles ne peuvent pas être initialisées dans constructeurs ou méthodes.

Exemple

Considérez le code suivant :

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test() {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }

  public static void main(String[] args) {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
Copier après la connexion
  • Modification-1 : L'instance finale la variable foo est initialisée avec un nouvel objet ArrayList dans le constructeur.
  • Modification-2 : La méthode add() est utilisée pour modifier le contenu de la liste foo, ce qui est autorisé.

Effectivement Final dans Java 1.8

Java 1.8 a introduit le concept de variables « effectivement finales ». Ce sont des variables locales qui sont effectivement immuables au sein de classes imbriquées ou de classes internes anonymes. Bien qu'ils n'utilisent pas le mot-clé « final », ils ne peuvent pas être réaffectés.

Sous-classement et remplacement

  • Classes finales : Ne peuvent pas être sous-classées.
  • Méthodes finales : Ne peut pas être remplacée (dans sous-classes).
  • Méthodes finales dans les superclasses : Peuvent être remplacées dans les sous-classes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal