Java. Статические переменные и методы

Чтобы понять, как работает static, рассмотрим сперва причину использования данного ключевого слова.
Представим, что имеется класс-утилита, содержащий метод, который всегда запускается одинаково; например, функция, возвращающая, скажем, случайное число. Не имеет значения, объект какого класса содержит этот метод - он всегда будет себя вести одинаково. Другими словами, поведение метода не зависит от состояния объекта. Возникает вопрос: Зачем же использовать объект, когда метод никогда не будет объектно-зависимым? Почему бы просто не попросить класс выполнить метод самостоятельно?
Представим другой сценарий: Предположим, Вы хотите хранить число созданных объектов определенного класса. Где Вы фактически будете хранить переменную? Эта идея не сработает, если хранить ее в виде объектной переменной.
Переменные и методы, помеченные как static, принадлежат классу, а не определенному объекту.Вы можете использовать метод static или переменную без каких-либо объектов данного класса.
Следующий пример демонстрирует объявление и использование статической переменной-счетчика:
В этом примере, статическая переменная frogCount устанавливается в ноль, когда класс Frog впервые загружается виртуальной машиной, раньше, чем создаться первый объект класса Frog.
Как только первый объект создан, конструктор Frog запускается и увеличивает значение переменной frogCount на единицу.
Теперь представим, что бы было, если бы frogCount была бы объектной переменной, нестатической.
Когда кот выполнится, она должна будет создать три объекта класса Frog, но результатом будет ошибка компилятора!
JVM не знает, к какой переменной fromCount вы хотите доступиться, или другими словами, в каком она объекте.
Материалы, которые могут вас заинтересовать
- Java. Вложенные классы в методах
- Java. Создание объекта вложенного класса извне внешнего класса
- Java. Создание объекта вложенного класса изнутри внешнего класса
- Java. Создание объекта вложенного класса
- Java. Создание "регулярного" вложенного класса
- Java. Вложенные классы (Inner Classes)
- Java. Создание обобщенных методов
- Java. Обобщенные типы (Generic Declarations)
- Java. Использование карт (Using Maps)







Спасибо за хороший пример
Отправить комментарий