final (Java)
En langage Java, le mot-clĂ© final indique qu'un Ă©lĂ©ment ne peut ĂȘtre changĂ© dans la suite du programme. Il peut s'appliquer aux mĂ©thodes et attributs d'une classe et Ă la classe elle-mĂȘme. Aussi, il peut s'appliquer sur les paramĂštres d'une mĂ©thode et sur les variables locales. Selon le contexte, on utilise final dans un souci de conception ou d'optimisation.
Il est aussi utilisĂ© avec le mĂȘme rĂŽle en PHP depuis la version 5 (en 2004)[1].
MĂ©thodes
Une mĂ©thode indiquĂ©e comme final ne peut ĂȘtre redĂ©finie dans une classe dĂ©rivĂ©e.
Exemple :
public class MaClass {
public final void uneMethode() {
...
}
}
On peut s'en servir pour forcer le comportement d'une méthode dans les sous-classes.
Attributs de classe ou d'objet
AppliquĂ© Ă un attribut de type primitif, ce dernier devient une constante. L'affectation doit ĂȘtre effectuĂ©e, au plus tard, dans le constructeur de la classe. Le fonctionnement est un peu diffĂ©rent sur un type objet : c'est la rĂ©fĂ©rence vers l'objet qui devient constante et non sa valeur. Ce dernier point s'applique Ă©galement aux tableaux qui sont aussi des rĂ©fĂ©rences.
Exemple :
public final class MaClass {
public final double PI = 3.14159; // Impossible de modifier la valeur
public final double[] tailles = {50.2, 60.8};
public void uneMethode() {
tailles[0] = 99; // fonctionne car tailles est une référence sur un tableau
}
}
Classes
Les classes final ne peuvent ĂȘtre dĂ©rivĂ©es.
Exemple :
public final class ClasseFinal {
...
}
Cela peut ĂȘtre fait dans un souci d'efficacitĂ© ou pour empĂȘcher l'utilisateur d'en faire une utilisation non appropriĂ©e dans la classe dĂ©rivĂ©e.
De nombreuses classes de la bibliothÚque standard Java sont déclarées comme final telles que java.lang.System[2] ou java.lang.String[3].
ParamÚtres de méthode
Le mot clef final peut aussi ĂȘtre utilisĂ© pour le paramĂštre d'une mĂ©thode dont on est sĂ»r qu'elle ne va pas changer de rĂ©fĂ©rence :
public static int addition(final int a, final int b){
return a + b;
}
Variables locales
Une autre utilisation du mot clef final est dans les variables locales. Elle suit la mĂȘme rĂšgle, c'est-Ă -dire qu'on est sĂ»r que la variable ne va pas changer.
public static int ajouterCinq(final int a){
final int b = 5;
return a + b;
}
Voir aussi
Articles connexes
Liens externes
Notes et références
Références
- https://www.php.net/manual/fr/language.oop5.final.php
- (en) « Class System », docs.oracle.com.
- (en) « Class String », docs.oracle.com.