web-dev-qa-db-fra.com

Différence entre les variables statiques publiques et statiques privées

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.

12
Android Girl

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.)

25
Jon Skeet
  • 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.

26
trutheality

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.

3
Preetham R U
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
3
Manish Mulani

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.

1
Andrew Logvinov