2010-03-07 6 views
1

Je peux imaginer 3 type de visibilité pour les variables (mais je pense qu'il ya plus):Comment contrôler la visibilité des variables en Java?

  1. variable est utilisé dans une méthode et toute modification de la valeur de cette variable ne sont pas visibles de l'extérieur de la méthode (donc c'est local pour une méthode particulière).

  2. Une variable est locale à la classe, ce qui signifie qu'elle n'est pas visible à partir de la classe. Cependant, n'importe quelle méthode de la classe peut facilement voir et changer la valeur de cette variable sans nécessité de donner la variable dans la liste des arguments des méthodes (donc c'est un peu global dans la classe).

  3. La variable est accessible par "objectName.variableName".

Comment déclarer ces différents types de variables?

+0

"(donc c'est un peu global dans la classe)": un vrai "global" à une classe est une variable 'static'. – Pindatjuh

+0

Doit être noté que 3 est généralement considéré comme une mauvaise idée. – brian

Répondre

3

1) Toute variable déclarée dans une méthode n'est visible que dans cette méthode. (méthode-locale). Le programmeur n'a pas le choix.

2) Toute variable déclarée avec le modificateur private est visible de l'intérieur instances de la classe, il est delared dans

3) public variables peuvent être accessibles à partir de toute catégorie avec object.variable. protected les variables peuvent être accédées de cette manière à partir des sous-classes seulement; Les variables private ne peuvent être accédées de cette manière que dans les instances de la classe dans laquelle la variable est déclarée.

Pour plus de détails et de références, voir Java Learning Trail on Sun's website.

Cependant: Révéler les membres de la classe (variables) à d'autres classes est une mauvaise pratique, et l'accès doivent être activés à l'aide de méthodes, telles que:

public class MyClass { 
    private int myInt; 

    public int getMyInt() { 
    return myInt; 
    } 

    public void setMyInt(int newInt) { 
    myInt = newInt; 
    } 
} 
+0

N'oubliez pas que l'omission du modificateur en premier lieu le rend privé du paquet. Cela le rend visible en dehors de la classe mais seulement dans le paquet local (ce qui est extrêmement utile). http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html –

+0

En effet, mais ce n'était pas couvert par des cas d'utilisation dans la question :) – Brabster

+0

En fait - maintenant que vous le mentionnez @ Chris Dennett, je dois admettre que je n'ai jamais eu besoin d'utiliser le paquet privé. J'ai toujours pensé qu'il introduisait une dépendance inutile sur la structure des paquets et avait une utilité très limitée.Il y a une autre question SO sur ce point, vous pourriez vouloir poster une réponse si vous avez des cas d'utilisation qui ne sont pas couverts :) – Brabster

0

1: juste quelque chose comme int i; dans la méthode

2: utiliser le modificateur private ou protected modificateur

3: utiliser public

2

Important à retenir: Si vous déclarez une variable dans une classe et n'utilisez aucun modificateur d'accès, il sera paquet-privé. Cela signifie que d'autres classes dans le même paquet, vous pouvez le référencer avec objectname.variable alors que vous ne pouvez pas le faire depuis les classes d'autres paquets.

Questions connexes