Найти в Дзене
JavAKnazzz

Другие модификаторы. Static

Модификатор static Переменная, объявленная внутри класса с модификатором static, называется статической, потому что она привязана исключительно к самому классу и существует независимо от его экземпляров (объектов). Если значение обычной переменной можно менять у каждого из объектов по отдельности, то статическая переменная является общей для всех экземпляров класса. Это значит, что: public class Bird {
public static int numberOfWings = 2;
} Обращаться к статическим переменным нужно через имя класса — в формате <имя класса>.<имя переменной>. Ведь статическая переменная относится не к конкретному экземпляру, а к самому классу: public class Practicum {
public static void main(String[] args) {
Bird.numberOfWings = 4;
}
} Итак, переменную нужно делать статической, если: Метод с модификатором static Static-метод так же, как и static-переменная, принадлежит классу, а не конкретному экземпляру, и может использоваться без создания объекта. Для того чтобы создать свой стати
Оглавление

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

Переменная, объявленная внутри класса с модификатором static, называется статической, потому что она привязана исключительно к самому классу и существует независимо от его экземпляров (объектов).

Если значение обычной переменной можно менять у каждого из объектов по отдельности, то статическая переменная является общей для всех экземпляров класса. Это значит, что:

  • внутри класса существует только одна копия статической переменной;
  • на её значение ссылаются все экземпляры класса;
  • если изменить значение статической переменной, оно изменится у всех объектов класса.

public class Bird {
public
static int numberOfWings = 2;
}

Обращаться к статическим переменным нужно через имя класса — в формате <имя класса>.<имя переменной>. Ведь статическая переменная относится не к конкретному экземпляру, а к самому классу:

public class Practicum {

public static void main(String[] args) {
Bird.numberOfWings = 4;
}
}

Итак, переменную нужно делать статической, если:

  • её значение не зависит от объектов (например, в коде будильника «Бодрое утро» всем объектам пригодится одинаковый параметр — название приложения, поэтому его можно записать в статическую переменную static String nameOfApp = "Бодрое утро");
  • её значение будет совместно использоваться всеми объектами одного класса (например, в статической переменной удобно хранить переключатель состояния персонажей: если в компьютерной игре применить к противникам эффект заморозки, все они должны одновременно замереть).

Метод с модификатором static

Static-метод так же, как и static-переменная, принадлежит классу, а не конкретному экземпляру, и может использоваться без создания объекта. Для того чтобы создать свой статический метод, достаточно при его объявлении добавить ключевое слово static:

public static void method() {
}

Внутри класса к статическому методу можно обратиться так же, как к обычному, — по имени. А для внешнего вызова можно обратиться через имя класса <имя класса>.<имя метода>.

Чаще всего статические методы применяются в утилитарных (англ. utility — «полезный») задачах — они отвечают за выполнение полезных действий, которые не меняют состояние объекта. Например, в стандартной библиотеке Java есть класс Arrays (англ. «множества»). Внутри него можно найти статические методы для работы с массивами: сортировку, поиск, сравнение и другие.

===> Статический метод может обращаться только к статическим переменным или методам !!!

т.е. это означает что все его атрибуты должны существовать. или можно создать нестатическую переменную в самом методе тогда её можно использовать.

===> @Override и static несовместимы

переопределять статические методы нельзя. Но можно объявить статический метод с одинаковой сигнатурой в родительском классе и классе-наследнике.

важно запомнить следующее: выполняться будет метод того класса, который соответствует типу переменной. Поэтому если объект-наследник сохранён в переменную родительского типа, то при выполнении программы будет вызван родительский метод, а не метод класса-наследника.

===> Ключевые слова this и super запрещены в static-методах

И последнее ограничение: внутри статического метода нельзя использовать ключевые слова this и super. Потому что они относятся к конкретным объектам класса, а static-методы — к самому классу.