Comment gérer la portée variable en Java
La portée fait référence à la zone d'accessibilité d'une variable. Il détermine où une variable déclarée peut être utilisée. Tenter d'utiliser une variable en dehors de sa portée vous donnera une erreur de compilation.
En règle générale, vous devez toujours utiliser le principe du moindre privilège lors de la détermination de la portée à donner à une variable. Selon ce principe, une variable ne devrait avoir que la visibilité dont elle a besoin pour faire son travail et pas plus.
Règles de portée
Il existe quatre règles de base qui régissent la portée des déclarations.
Règle 1
Lorsque vous déclarez un paramètre, sa portée se trouve dans le corps de la fonction.
String withdraw (int amount){
// this is the scope of the parameter "amount" ie from the left brace ,{, to the the right one, }
}
Règle 2
La portée d'une variable déclarée dans une fonction va de la partie où elle est déclarée à la fin du corps de la fonction. Ce type de variable déclaré dans le corps d'une fonction est appelé variable locale. Par conséquent, cette variable a une portée locale.
String withdraw (int amount){
String currency;
int transaction_fee = 2; // this is a local variable and it's scope begins from here till the right brace, }
}
Règle 3
Une variable déclarée dans l'en-tête d'une instruction for a également une portée locale.
for ( int y=11;y <20; y++){
// variable y has local scope
}
À ce stade, il est important de mentionner que vous obtiendrez une erreur de compilation si votre méthode a deux variables locales avec le même nom.
Règle 4
La portée d'une méthode ou d'un champ de classe est le corps entier de la classe. Cela permet aux méthodes d'instance d'une classe de pouvoir utiliser les méthodes ou les champs de la classe.
Regardez l'exemple ci-dessous. C'est une implémentation de code entièrement fonctionnelle des règles ci-dessus. Vous pouvez le compiler et l'exécuter sur votre PC.
class Account {
int y = 2; // class field
static void withdraw(int amount){
String z;
for(int y=1; y<=3; y++){ // line 7
System.out.println("
Remember to hide your PIN.");}
}
public static void main(String args[]){
withdraw(50); }
}
Remarquez le champ de classe et le code à la ligne 7. Si vous déclarez un paramètre ou une variable locale en utilisant un nom similaire à celui utilisé par l'un des champs de classe, l'exécution se poursuivra toujours normalement et sans erreur. C'est ce qu'on appelle l'ombrage.
Dans l'exemple ci-dessus, la variable y est déclarée deux fois et pourtant le compilateur ne signale aucune erreur. Le compilateur "masque" d'abord les champs de classe jusqu'à ce que le bloc soit exécuté.
Parfois, vous devrez peut-être accéder à un champ ombré dans le bloc. Ceci peut être fait de deux façons:
a) Vous pouvez utiliser le mot – clé this si vous avez affaire à une variable d'instance. Voir l'exemple ci-dessous :
this.x : x est une variable d'instance
b) Si la variable à laquelle vous essayez d'accéder est une variable de classe statique , utilisez la syntaxe ci-dessous pour y accéder :
ClassName.x // x is a static variable
Portée de la classe
Normalement, chaque objet a ses propres variables d'instance. Il existe des scénarios où vous avez besoin de la même copie de la variable partagée avec toutes les instances. Dans ce cas, vous devrez les rendre statiques.
Les membres de classe définis avec le mot-clé static ont une portée de classe. Par conséquent, les variables statiques ont une portée de classe. Elles sont accessibles par toutes les méthodes de la classe. Pour accéder aux variables statiques publiques d' une classe, utilisez :
ClassName.variable_name
D'un autre côté, les variables statiques privées d' une classe ne sont accessibles que par les méthodes de la classe.
Obtenez des classes et des constructeurs dans votre portée
Parfois, vous pouvez avoir besoin d'une variable qui, lorsqu'elle est accessible après l'initialisation, n'est pas modifiée. Au cas où vous en auriez besoin, utilisez le mot-clé final . Il suffit de le placer avant la variable que vous déclarez afin de l'utiliser.
final double PI = 3.14159;
Essayer de modifier une variable déclarée comme finale produira une erreur de compilation. Il est également important que vous sachiez que vous devez immédiatement initialiser une variable finale . Vous ne pouvez pas choisir de l'initialiser plus tard.
À ce stade, vous devriez vous pencher sur l'apprentissage des constructeurs et des classes en Java.