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