Różnica między publicznymi i prywatnymi zmiennymi statycznymi

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);
}
}

Ten program java zawiera zmienną statyczną. Ale nie mogę zrozumieć różnicy między publicznymi i prywatnymi zmiennymi statycznymi.

Author: Donnied, 2012-05-05

5 answers

Publiczna zmienna jest dostępnawszędzie w kodzie - prywatna zmienna jest dostępna tylko wewnątrz samej klasy. W tym przypadku używasz Employee.salary w ramach klasy Employee, więc w porządku.

Zauważ, że statyczna zmienna jest zupełnie oddzielną sprawą - a metody i klasy mają dostępność w taki sam sposób jak zmienne.

Dostępne są również inne poziomy dostępu - protected oraz domyślny dostęp "pakietu" (którego nie można określić wyraźnie). Zobacz sekcja 6.6 specyfikacji języka Java, aby uzyskać więcej szczegółów .

(pobocznie warto również dowiedzieć się, co oznacza static - prawie na pewno nie chcesz, aby te zmienne były statyką, ponieważ dotyczą każdego Employee niż ogólnie pojęciem Employee. To dziwne, że DEPARTMENT jest stałą również tutaj.)

 25
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-25 07:44:25
  • Zmienna public jest dostępna z dowolnego miejsca (dobrze, wszędzie tam, gdzie klasa jest dostępna).

  • Zmienna private jest dostępna tylko wewnątrz klasy.

  • Zmienna static należy do klasy, a nie do instancji klasy.

  • Zauważ, że zmienna DEPARTMENT jest również final, co oznacza, że nie może być modyfikowana po jej ustawieniu. Jest to tutaj ważne, ponieważ właśnie to ratuje to przed złym kodem-zmienna jest stała, więc można dać dostęp do niej rzeczom spoza klasy.

 26
Author: trutheality,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 06:36:33
private static double salary

Jest dostępna tylko w ramach klasy i może być dostępna jako

salary or Employee.salary

While

 public static final String DEPARTMENT

Może być również dostępny spoza tej klasy w następujący sposób

Employee.DEPARTMENT
 3
Author: Manish Mulani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 06:38:48

public static - Dostęp można uzyskać zarówno z poziomu klasy, jak i poza klasą.

private static - dostęp można uzyskać tylko z poziomu klasy.

Static ' y są uważane za anty-oo W OOPS.

class Dog
{
    public static string X;
    private static string y;
}

y Dostęp można uzyskać tylko z wewnątrz Dog Poprzez Dog.y lub po prostu y. X może być dostępny w dowolnym miejscu przez Dog.X lub, jeśli jesteś w klasie lub używasz using static Dog jako nagłówka, po prostu X.

 3
Author: Preetham R U,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-25 17:13:25

Oczywiście, nie możesz uzyskać dostępu do zmiennej Statycznej private spoza klasy, i możesz uzyskać dostęp do zmiennej statycznej public z każdego miejsca.

 1
Author: Andrew Logvinov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 06:31:13