La portée détermine le partie d'un programme, dans laquelle une variable peut être utilisée.
La portée des variables diffère selon leur emplacement au sein du code Java. En fait, lorsqu'une variable est déclarée au sein d'un bloc de code comme une classe ou une méthode, elle ne peut être utilisée que dans ce même bloc.
public class classe_comptage { /* i est utilisable dans toute la classe y compris dans ses méthodes */ int i = 0; public void compteur(){ // pas est seulement utilisable
// dans la méthode compteur int pas = 5 while(i <= 100){ system.out.println(i + 'rn'); i += 5; } } }
Par défaut, les variables possèdent une portée essentiellement locale dans dans leurs blocs respectifs délimités par des accolades.
{ int x = 1; // seul x est accessible à cet endroit { // x est accessible à cet endroit,
// y n'est pas accessible puisque la
// variable n'est pas encore déclarée int y = 2; // x et y sont accessibles } // y n'est pas accessible,
// x est accessible à cet endroit }
En se fondant sur cette règle, une variable définie dans une classe peut être accèdée dans toute la classe et une autre définie dans une méthode restera accessible dans cette seule méthode.
public class calcul { int a = 10; public static void main(String[] args){ int b = 4; System.out.println("resultat : " + a * b); } }
Il est possible de déterminer la portée des variables plus précisément, par le truchement d'un modificateur d'accès.
Les variables peuvent avoir une portée globale, soit une accessibilité entre toutes les classes de tous les paquetages, à condition d'utiliser le modificateur d'accès public lors de leur déclaration.
public class affichage { public String texte = 'Un texte...'; public void affiche(){ system.out.printl(texte); } public class modification { public void ajout(){ texte += 'Un second paragraphe...'; } }
La portée entre classe peut être limitée aux seules sous-classes, en déclarant une variable avec le modificateur d'accès protected.
Les variables déclarées avec le modificateur d'accès private ne peuvent être accédées que dans la classe elle-même.
private string chaine = "Une chaîne de caractères...";
Un programme reposant sur des variables globales peut être à l'origine de bogues difficiles à détecter. C'est pourquoi, il est préférable d'utiliser des variables locales offrant plus de sûreté avec une durée de vie limitée.
Exempleclass calcul{ int a = 1; void addition(){ int b = 1; b += a; // a = 2 } void soustraction(){ int c = 1; c -= a + b; /* provoque une erreur car b n'est accessible que dans addition() */ } } |