Составители:
Рубрика:
48
• static – модификатор принадлежности – методы, отмеченные
этим модификатором, принадлежат классу и доступны до создания
объектов. Используют только локальные переменные или глобальные
статические. По умолчанию – без модификатора static - методы
принадлежат экземплярам класса и доступны только через экземпля-
ры.
Статические методы могут оперировать только статически-
ми или локальными переменными.
• final – метод не может быть переопределен при наследовании
классу.
• synchronized – при исполнении метода не может произойти
переключение конкурирующих потоков
• abstract – нереализованный метод. Тело такого метода про-
сто отсутствует.
• native – метод, реализация которого выполнена на другом
языке программирования и разыскивается в системных библиотеках.
• strictfp – метод требует выполнения арифметических дей-
ствий с абсолютной (не зависящей от платформы) точностью.
Имя метода внутри класса не должно быть уникальным: более того,
широко практикуется создание методов с одинаковыми именами, но с
различными наборами параметров. Это то, что традиционно называет-
ся перегрузкой (overloading) методов. С точки зрения русского языка
можно было
бы перевести этот термин как «совмещение» методов.
Имя метода, в наилучших традициях, отражает суть действий, произ-
водимых им; различные списки параметров являются необходимым и
достаточным атрибутом для того, чтобы безошибочно различать одно-
именные методы. Следует обратить внимание на то, что ни тип воз-
вращаемого значения, ни набор модификаторов, ни декларации throws
не
могут гарантировать этого различия.
49
6.5 Конструкторы
Конструктор – обязательный элемент любого класса, классов без
конструктора просто не может быть, так как к классу, не описавшему
ни одного конструктора, компилятор автоматически добавляет конст-
руктор с пустым набором инструкций и пустым списком параметров.
Это так называемый конструктор по умолчанию.
Как и метод, конструктор представляет собой именованный набор
операторов, снабженный
списком формальных параметров с необяза-
тельной декларацией throws. Как и с методами, допускается «пере-
грузка» конструкторов; класс может иметь несколько конструкторов,
различающихся списками формальных параметров.
Но, в отличие от метода,
a) имя конструктора обязано совпадать с именем класса;
b) конструктор не может быть вызван иначе как оператором new;
c) конструктор не имеет возвращаемого
значения – так как он
возвращает ссылку на создаваемый объект.
Из модификаторов могут употребляться только модификаторы дос-
тупа. Конструкторы не наследуются – они выполняются автоматиче-
ски при создании объекта класса-расширения.
6.6 Блоки инициализации
Блок инициализации представляют собой неименованные группы
операторов, размещенные на уровне класса, то есть, вне методов и
конструкторов. Блоки инициализации выполняются при загрузке клас-
са в память виртуальной машины, или при создании экземпляров клас-
са, в зависимости от наличия или отсутствия модификатора static.
Как было сказано, статические компоненты класса доступны сразу
после загрузки
класса виртуальной машиной. Блок операторов с мо-
дификатором static, размещенный на уровне описания класса, также
будет выполнен на этом этапе. На том же уровне можно разместить
блок динамической инициализации – он будет выполнен при создании
объекта класса прежде конструктора.
Блоки инициализации, как и конструкторы, не наследуются, а ис-
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »