Разница между статическими и частными статическими переменными
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);
}
}
Эта java-программа содержит статическую переменную. Но я не могу понять разницу между публичными и частными статическими переменными.
Ответы
Ответ 1
Публичная переменная доступна повсюду в коде - закрытая переменная доступна только внутри самого класса. В этом случае вы используете Employee.salary
в классе Employee
, так что все в порядке.
Обратите внимание, что статическая переменная - это совершенно отдельный вопрос, а методы и классы доступны так же, как и переменные.
Также доступны другие уровни доступа - protected
и доступ по умолчанию "пакет" (который не может быть указан явно). См. раздел 6.6 Спецификации языка Java для получения дополнительной информации.
(Кроме того, стоит также узнать, что означает static
- вы почти наверняка не хотите, чтобы эти переменные были статическими, поскольку они применяются к каждому Employee
, а не к концепции Employee
в целом. Это странно для DEPARTMENT
здесь тоже будет константа.)
Ответ 2
-
Доступна переменная A public
из любого места (ну где угодно, где класс доступен).
-
A private
переменная доступна только внутри класса.
-
A static
переменная принадлежит классу, а не экземпляру класса.
-
Обратите внимание, что переменная DEPARTMENT
также final
, что означает, что она не может быть изменена после ее установки. Это важно здесь, потому что это экономит это из-за плохого кода - переменная является константой, поэтому вполне нормально давать вещи вне доступа к классу.
Ответ 3
private static double salary
доступен только внутри класса и может быть доступен как
salary or Employee.salary
В то время как
public static final String DEPARTMENT
Также можно получить доступ извне этого класса, а именно:
Employee.DEPARTMENT
Ответ 4
public static
- можно получить доступ как внутри класса, так и за его пределами.
private static
- доступ возможен только из класса.
Статические считаются анти-OO в OOPS.
class Dog
{
public static string X;
private static string y;
}
К y
можно получить доступ только изнутри Dog
через Dog.y
или просто y
.
X
может быть доступен в любом месте через Dog.X
или, если вы в классе или используете using static Dog
в качестве заголовка, просто X
.
Ответ 5
Очевидно, что вы не можете получить доступ к статической переменной private
вне класса, и вы можете получить доступ к статической переменной public
.