Статические элементы

Итак, методы вызываются для объектов. Однако чтобы создать объект, необходимо запустить программу и метод public static void main(String[] args), а это означает, что есть метод, который доступен еще до создания каких бы то ни было объектов. Обратите внимание, что в заголовке метода указаны модификаторы public и static. Дело в том, что виртуальная машина Java для исполнения класса-программы считывает код класса в память и разыскивает в нем метод с таким названием и с такими модификаторами. Кроме того, на этом этапе считываются только методы и переменные, отмеченные модификатором static – статические элементы класса.

Статические элементы принадлежат классу, а не экземпляру класса.

Для статических переменных, называемых также переменными класса, выделяется только одна ячейка памяти, общая для всех экземпляров. Изменение статической переменной в одном экземпляре класса мгновенно приведет к ее изменению во всех экземплярах. К статическим переменным можно обращаться по имени класса, а не только по имени экземпляра, причем это можно делать, даже если не создан ни один экземпляр класса.

Для статических методов исполняющая система Java всегда создает в памяти только одну копию машинного кода метода. Статические методы выполняются сразу во всех экземплярах класса. Они могут выполняться, даже если не создан ни один экземпляр класса. Статические методы имеют доступ только к статическим переменным класса, обращение из статического метода к нестатической переменной класса является ошибкой. Чтобы вызвать статический метод достаточно уточнить имя метода именем класса (а не именем объекта). Некоторые стандартные статические методы мы уже вызывали так в программах рассмотренных ранее. Например, методы класса Math – Math.abs(x), Math.sqrt(x) или метод System.out.println().

Если статический метод вызван в классе, в котором он описан, то его можно вызывать просто по имени. Именно так, по имени, был вызван метод areaTrapezoid() в рассмотренном ранее примере.

Модификатором static можно отметить и блок операторов, размещенный на уровне описания класса. В этом случае он как статический элемент класса будет выполнен виртуальной машиной сразу же после загрузки класса.

Назначение других модификаторов, используемых в объявлениях членов класса, будет рассмотрено в главах…

Отметим только, что добавлением модификатора доступа public к описанию члена класса, позволяет сделать его открытым, то есть доступ к таким членам класса (полям или методам) разрешен любому классу.

В противоположность открытости можно объявить некоторые члены класса закрытыми, записав вместо слова public модификатор доступа private. К таким методам и переменным разрешается доступ только внутри класса, в котором они объявлены.

Если модификатор доступа не указывается при объявлении переменных или методов, то доступ к ним разрешается для любых классов того же пакета, в котором размещается класс, где объявляются эти методы и переменные.

В ближайших главах по мере изучения основ языка программирования Java будем в программах-примерах описывать статические методы, и вызывать их в методе main() просто по имени. Это будет временно, и до тех пор, пока не будет подробно изложена концепция объектно-ориентированного подхода.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: