Java: static и final — уроки для начинающих

Модификаторы static и final — важные инструменты Java, используемые для создания констант и управления доступом к членам класса.

Модификатор static

Рассмотрим класс Sum:

public class Sum {

    public static int summa(int a, int b) {
        return a + b;
    }

    public int mult(int a, int b) {
        return a * b;
    }
}

Метод summa содержит модификатор static. Это позволяет обращаться к нему напрямую через имя класса, без создания объекта:

int x = Sum.summa(10, 25); // 35

Обращение к методу mult подобным образом невозможно, так как он не содержит модификатор static:

// int y = Sum.mult(5, 7); // Ошибка компиляции

Для вызова mult необходимо создать объект класса Sum:

Sum a = new Sum();
int y = a.mult(5, 7); // 35

static позволяет использовать методы без создания экземпляра класса.

Статические поля

Модификатор static применим к полям (переменным):

public class Sum {
    public static int x = 12;
    // ...
}

К статическому полю x можно обратиться напрямую через имя класса:

Sum.x = 24; // Изменяем значение статического поля

Изменение значения статического поля x влияет на все экземпляры класса. Если создать несколько объектов класса Sum, изменение Sum.x отразится на всех:

Sum a = new Sum();
System.out.println(a.x); // 24
Sum b = new Sum();
System.out.println(b.x); // 24

Для переменных, специфичных для каждого объекта, модификатор static не используется. Статические поля и методы принадлежат классу, а не его объектам.

Взаимодействие статических и нестатических методов

Статические методы взаимодействуют только со статическими полями и методами. Попытка использовать нестатический метод внутри статического метода приведёт к ошибке компиляции.

Модификатор final

Модификатор final создаёт константы. Например:

public class Sum {
    public static final int X = 10;
}

Значение константы X изменить невозможно. Попытка присвоить ей новое значение вызовет ошибку компиляции.

final применим к полям, методам и классам.

  • final для метода: Предотвращает переопределение метода в классах-наследниках.
  • final для класса: Запрещает наследование от этого класса.

Модификаторы static и final — важные инструменты в Java, позволяющие создавать статические поля и методы, константы, а также управлять наследованием и переопределением методов. Правильное их использование способствует созданию более структурированного и эффективного кода.

Что будем искать? Например,программа