1. Modification finale
Les classes modifiées par final ne peuvent pas être héritées, donc les méthodes de classe des membres ne peuvent pas être écrasées, et les classes modifiées par les mots clés finaux n'ont pas de sous-classes, donc les détails d'implémentation de la classe ne peuvent pas être modifiés et ne peuvent pas être élargis. Toutes les méthodes membres de la classe finale seront implicitement spécifiées comme méthodes finales, et les variables des membres de la classe finale peuvent être définies sur final au besoin.
2. Méthode de modification finale
Si une méthode dans une classe est modifiée par le mot-clé final, sa sous-classe ne peut pas écraser la méthode et ne peut être héritée que par la sous-classe. Si une méthode dans la classe parent ne veut pas être écrasée par sa sous-classe, la méthode peut être définie comme le type final. De plus, la méthode privée de la classe parent (c'est-à-dire la méthode modifiée par le mot-clé privé) n'est pas autorisée à être écrasée par la sous-classe. Par conséquent, la méthode modifiée par le mot-clé privé dans la classe parent est par défaut au type final. La méthode modifiée par le mot-clé final a les caractéristiques suivantes:
Cette méthode est verrouillée, empêchant toute classe d'héritage de modifier sa signification et sa mise en œuvre;
Efficace. Lorsque le compilateur rencontre l'appel de la méthode finale, il entrera dans le mécanisme intégré, améliorant considérablement l'efficacité de l'exécution;
De plus, les méthodes statiques qui utilisent la modification finale ne peuvent pas être cachées dans les sous-classes de leur classe à laquelle elles appartiennent;
3. Variables de modification finales
La signification du mot-clé final est "Ceci est irremplaçable" ou "état final";
Alors pourquoi arrêter le changement?
L'inventeur de la langue Java peut empêcher les modifications dues à deux fins:
A. Problèmes d'efficacité:
Certaines méthodes de certaines classes de JDK ne sont pas autorisées à être écrasées par les utilisateurs. Le concepteur peut penser que la méthode utilisée est la meilleure méthode.
Si l'utilisateur le couvre en privé ou le couvre en raison d'une négligence, il affectera les capacités du système du JVM ou du système;
B. Exigences de conception:
Comme nous le savons tous, certains cas doivent utiliser des mots clés finaux, tels que le paramètre passant des classes intérieures anonymes dans la méthode.
Certaines personnes disent que les variables finales sont immuables après la mission.
Alors, que signifie exactement cette inchange?
Cet invariant fait référence à une référence, à une adresse et le contenu de l'objet référencé est toujours mutable.
C'est-à-dire que cette variable finale pointe toujours vers un objet, est un pointeur constant, pas un pointeur vers une constante.
(1) Le type de données de base modifié par le mot-clé final ne peut pas être modifié une fois qu'il est initialisé;
(2) S'il s'agit d'une variable de type de référence, il ne peut pas être autorisé à pointer un autre objet après l'avoir initialisé, mais le contenu de l'objet pointé par la référence peut changer. La raison en est: l'adresse de l'objet de référence stocké dans la mémoire du tas du type de données de référence. Une fois que la finale modifie le type de référence, l'espace de mémoire du tas pointé par la référence (ou l'adresse de mémoire du tas stockée dans la référence) ne peut pas être modifiée.
Lorsque vous utilisez Final pour modifier une variable membre non statique d'une classe, il existe deux façons d'initialiser les variables des membres:
(3) Initialiser pendant la déclaration (4) Initialiser lors de la déclaration d'une variable. La variable est appelée blanc final, c'est-à-dire le blanc final, mais la valeur initiale doit être attribuée à cette variable dans tous les constructeurs de la classe où la variable est située.
Lorsque vous utilisez Final pour modifier la variable membre statique d'une classe, il existe deux façons d'initialiser la variable de membre statique:
(5) Initialiser lors de la déclaration (6) Initialiser dans le bloc d'initialisation statique Lorsque la modification finale des variables statiques de l'interface, il n'y a qu'une seule façon d'initialiser:
(7) Initialiser lors de la déclaration. Lorsque vous utilisez Final pour modifier les variables des membres locaux, il vous suffit de vous assurer que l'affectation est initialisée avant utilisation.
En bref, les variables modifiées par le mot-clé final ne peuvent pas être initialisées lorsqu'elles sont déclarées, mais il doit être assuré que la variable est initialisée avant utilisation. Une fois initialisé et attribué, il ne peut pas être réaffecté. Essayez d'analyser les résultats de sortie du programme:
classe publique test {public static void main (string [] args) {String a = "hello2"; chaîne finale b = "Bonjour"; String d = "Hello"; Chaîne c = b + 2; String e = d + 2; System.out.println ((a == c)); System.out.println ((a == e)); }} 4. Paramètres de modification finaux
Lorsque le paramètre de méthode est le type final, vous pouvez lire et utiliser ce paramètre, mais vous ne pouvez pas modifier la valeur du paramètre. Cette variable est créée lorsque la méthode est appelée et est initialisée à la valeur du paramètre correspondant. Sa valeur ne peut pas être modifiée avant que le corps de la méthode ne soit exécuté. La valeur du paramètre du type de données de base modifié avec le mot-clé final ne peut pas être modifiée. Le type de données de référence modifié avec le mot-clé final ne peut pas être la référence pointant vers un autre objet ou attribuer une valeur à NULL, mais le contenu de l'objet de référence peut être modifié à l'aide de cette référence. Le but de Final à modifier les paramètres n'est pas d'empêcher le fonctionnement du paramètre de modifier la valeur de la variable correspondante en dehors de la méthode dans la méthode appelée, mais d'éviter le fonctionnement de réaffectation du paramètre dans la méthode, affectant la valeur initiale lorsque le paramètre est passé. De plus, la modification des paramètres de la méthode avec le mot-clé final ne peut pas empêcher le contenu de la valeur du paramètre passé de l'extérieur de la méthode. Pour plus de détails, veuillez vous référer à l'explication du type de données de référence de modification finale.