Главная » Java » Статические поля Java

0

 

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

В примере класса Body объявлено одно статическое поле, nextID, предназначенное для хранения очередного доступного для использования порядкового номера объекта. Полю nextID нулевое значение присваивается после загрузки класса, в процессе инициализации последнего (комментарии по этому ПОRОДУ Приведены в разделе 11.3 на странице 319). Далее вы увидите, что в каждом вновь создаваемом объекте класса Body переменной idNum будет присваиваться текущее содержимое nextID с последующим увеличением значения nextID на единицу. Для создания объектов Body и ведения учета их порядковых номеров нам вполне достаточно одного экземпляра переменной nextID.

В контексте "родного" класса на статическое поле можно ссылаться непосредственно, но если предпринимается попытка доступа к полю извне, идентификатору поля следует предпослать имя класса. Например, значение nextID может Быть выведено на экран следующим образом:

System.out.println(Body.nextID);

Собственно говоря, для иллюстрации возможностей доступа к статическим полям вполне подходит и поле out класса system.

 

Для обращения к статическому члену классу разрешено также пользоваться ссылкой на объект этого класса:

system.out.printlnCmercury.nextID);

Такой возможностью, однако, не следует злоупотреблять, поскольку в подобном случае создается ложное впечатление, будто переменная nextID есть частный атрибут объекта mercury, а не член класса Body в целом. При обращении к статическому члену посредством ссылки на объект компилятор определяет имя соответствующего класса, а значением ссылки как таковой может быть даже null.

В ходе изложения, употребляя термин поле, мы, как правило, имеем в виду его нестатическую разновидность – только в двусмысленных ситуациях, требующих особого уточнения, мы вынуждены прибегнуть к словосочетанию не-статuческое поле.

Упражнение 2.3. Исправьте текст объявления класса vehiсlе (см. упражнение 2.1), добавив статическое поле для хранения очередного доступного для использования номера объекта-автомобиля и нестатическое поле – для присваивания автомобилю "личного" номера.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии