class Employee{
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development";
public static void main(String args[]){
salary = 1000;
System.out.println(DEPARTMENT+ " average salary:"+salary);
}
}
Ce programme Java contient une variable statique. Mais je ne peux pas comprendre la différence entre les variables statiques publiques et privées.
Une variable publique est accessible partout dans le code - une variable privée n'est accessible que dans la classe elle-même. Dans ce cas, vous utilisez Employee.salary
dans la classe Employee
, donc ça va.
Notez que la variable étant statique est une question complètement distincte - et les méthodes et les classes ont l'accessibilité de la même manière que les variables.
D'autres niveaux d'accès sont également disponibles - protected
et l'accès par défaut "package" (qui ne peut pas être spécifié explicitement). Voir section 6.6 du Java Language Specification for more details .
(En passant, il vaut également la peine de savoir ce que signifie static
- vous ne voulez certainement pas que ces variables soient statiques , car ils s'appliquent à chacun Employee
plutôt qu'au concept Employee
en général. C'est étrange pour DEPARTMENT
pour être une constante ici aussi.)
Une variable public
est accessible de n'importe où (enfin, partout où la classe est accessible).
Une variable private
n'est accessible qu'à l'intérieur de la classe.
Une variable static
appartient à la classe plutôt qu'à une instance d'une classe.
Notez que la variable DEPARTMENT
est également final
, ce qui signifie qu'elle ne peut pas être modifiée une fois qu'elle est définie. C'est important ici parce que c'est ce qui évite que ce soit du mauvais code - la variable est une constante donc il est normal de donner accès à des choses en dehors de la classe.
public static
- accessible depuis la classe aussi bien qu'en dehors de la classe.
private static
- peut être accessible uniquement depuis la classe.
Les statiques sont considérés comme anti-OO dans OOPS.
class Dog
{
public static string X;
private static string y;
}
y
accessible uniquement depuis l'intérieur Dog
via Dog.y
ou simplement y
. X
est accessible n'importe où via Dog.X
ou, si vous êtes dans la classe ou utilisez using static Dog
comme en-tête, juste X
.
private static double salary
est disponible uniquement au sein de la classe et est accessible en tant que
salary or Employee.salary
Tandis que
public static final String DEPARTMENT
Accessible depuis l'extérieur de cette classe aussi comme suit
Employee.DEPARTMENT
De toute évidence, vous ne pouvez pas accéder à la variable statique private
depuis l'extérieur de la classe, et vous pouvez accéder à la variable statique public
de partout.