Maison  >  Article  >  Java  >  Que savez-vous du mot-clé Java final ?

Que savez-vous du mot-clé Java final ?

坏嘻嘻
坏嘻嘻original
2018-09-14 10:35:121347parcourir

Pour les débutants, Tomcat est un très bon choix pour exécuter JSP et Servlet. Vous pouvez également utiliser de la résine, qui ne coûte rien. Le support de Resin pour XML est très bon.

1. Modifier la finale du membre de données de base

C'est l'objectif principal de final. Sa signification est équivalente à la const de C/C++, c'est-à-dire que le membre est modifié comme. une constante, ce qui signifie qu’elle ne peut pas être modifiée. Par exemple, PI et E dans la classe java.lang.Math sont des membres finaux et leurs valeurs sont 3,141592653589793 et ​​2,718281828459045.

2. Modifier le final d'une référence à une classe ou un objet

En Java, on ne peut pas laisser l'objet être modifié comme final, mais on peut seulement modifier la référence de l'objet, ce qui signifie que même si vous écrivez public final A a = new A(); En fait, les données de l'objet pointé par a peuvent toujours être modifiées. Ce qui ne peut pas être modifié, c'est la valeur de référence de a lui-même, c'est-à-dire que vous ne pouvez pas réaffecter. un. La même situation se produit dans les tableaux, tels que public final int[] a = {1, 2, 3, 4, 5}. En fait, la valeur de a est modifiable, c'est-à-dire que a[0] = 3 peut être écrite. . Selon la compréhension actuelle, les données du tableau en Java ne peuvent pas être modifiées pour être non modifiables, contrairement à C/C++.

3. La finale de la méthode modifiée

La finale de la méthode modifiée est très différente du const utilisé pour modifier l'objet membre en C/C++. Tout d’abord, la signification finale d’une méthode modifiée n’est pas « non modifiable », mais signifie que la méthode ne peut pas être redéfinie par les membres hérités. (Notez que ce qui est dit ici ne peut pas être redéfini ne signifie pas que les sous-classes ne doivent pas définir des méthodes portant le même nom. Si la méthode de la classe parent est un type privé, la sous-classe est autorisée à définir la méthode. Ce que l'on entend ici est qu'elle ne peut pas être redéfinie. En réécrivant la méthode, le polymorphisme de la réécriture de méthode peut être réalisé si vous ne voulez pas que la situation de substitution de méthodes comme A a = new B(); 🎜>Exemple :

De plus, lorsqu'une méthode est modifiée en tant que méthode finale, cela signifie que le compilateur peut charger la méthode en ligne (inline). La méthode dite en ligne signifie que le compilateur est chargé. n'a pas besoin d'appeler la fonction comme méthode habituelle pour appeler la méthode, mais copie directement le code de la méthode dans le code d'origine après certaines modifications (insérez le corps de la méthode directement dans le point d'appel au lieu de faire un appel de méthode). Cela peut accélérer l'exécution du code (car la surcharge liée à l'appel des fonctions est omise), comme l'appel de arr.length() dans int[] arr = new int[3], etc.
public class A {
    // final方法f
    public final void f() {
       System.out.println("类A中的final方法f被调用了");
    }
}
public class B extends A {
    // 编译错误!父类的f方法是final类型,不可重写!
    //! public void f() {
    //!     System.out.println("类B中的方法f被调用了");
    //! }
}

D'un autre côté, les méthodes privées sont également implicitement modifiées comme finales par le compilateur, ce qui signifie qu'il n'y a aucune différence entre private final void f() et private void f().

4. Classe finale modifiée

Lorsqu'une classe est modifiée comme finale, sa signification est très claire, c'est-à-dire que la classe n'est pas autorisée à être héritée, c'est-à-dire la classe est "final", toute opération qui en hérite se terminera par une erreur de compilation. Cela met également en évidence la raison pour laquelle Java utilise final au lieu de const comme identifiants. (Les variables membres peuvent ne pas être finales et les méthodes membres peuvent être directement finales)

Exemple :

5 Paramètre final
       public final class A {
}
// 编译错误!A是final类型,不可被继承!
//!public class B extends A{
//!}

pour. paramètres de l'objet Effectuer les modifications finales. On pense que la variable objet reçoit sa référence, qui est modifiée pour empêcher toute modification involontaire pendant le processus d'appel.

Recommandations associées :

Série d'apprentissage JAVA/JSP bases de three_php

Série d'apprentissage JAVA/JSP bases de one_php

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!

Déclaration:
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