Подтвердить что ты не робот

Разница между статическими и частными статическими переменными

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-программа содержит статическую переменную. Но я не могу понять разницу между публичными и частными статическими переменными.

4b9b3361

Ответ 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.