Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница39 из 67
1   ...   35   36   37   38   39   40   41   42   ...   67

Ключевое слово static


В некоторых случаях желательно определить член класса, который будет использоваться независимо от любого объекта этого класса. Обычно обращение к члену класса должно выполняться только в сочетании с объектом его класса. Однако можно создать член класса, который может использоваться самостоятельно, без ссылки на конкретный экземпляр. Чтобы создать такой член, в начало его объявления нужно поместить ключевое слово static. Когда член класса объявлен как static (статический), он доступен до создания каких-либо объектов его класса и без ссылки на какой-либо объект. Статическими могут быть объявлены как методы, так и переменные. Наиболее распространенный пример статического члена – метод main(). Этот метод объявляют как static, поскольку он должен быть объявлен до создания любых объектов.

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

На методы, объявленные как static, накладывается ряд ограничений.

  • Они могут вызывать только другие статические методы.

  • Они должны осуществлять доступ только к статическим переменным.

  • Они ни коим образом не могут ссылаться на члены типа this или super. (Ключевое слово super связано с наследованием и описывается в следующей главе.)

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

// Демонстрация статических переменных, методов и блоков.

class UseStatic {

static int a = 3;

static int b;

static void meth(int x) {

System.out.println("x = " + x);

System.out.println("a = " + a);

System.out.println("b = " + b);

}

static {

System.out.println("Статический блок инициализирован.");

b = a * 4;

}

public static void main(String args[]) {

meth(42);

}

}

Сразу после загрузки класса UseStatic программа выполняет все операторы static. Вначале значение a устанавливается равным 3, затем программа выполняет блок static, который выводит сообщение, а затем инициализирует переменную b значением a*4, или 12. Затем программа вызывает метод main(), который обращается к методу meth(), передавая параметру x значение 42. Три оператора println() ссылаются на две статических переменные a и b на локальную переменную x.

Вывод этой программы имеет такой вид:

Статический блок инициализирован.

x = 42

a = 3

b = 12

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

имя_класса.метод( )

Здесь имя_класса – имя класса, в котором объявлен метод тип static. Как видите, этот формат аналогичен применяемому для вызова нестатических методов через переменные объектных ссылок. Статическая переменная доступна аналогичным образом – посредством операции точки, следующей за именем класса. Так в Java реализованы управляемые версии глобальных методов и переменных.

Ключевое слово final


Переменная может быть объявлена как final (окончательная). Это позволяет предотвратить изменение содержимого переменной. Это означает, что переменная типа final должна быть инициализирована во время ее объявления. Например:

final int FILE_NEW = 1;

final int FILE_OPEN = 2;

final int FILE_SAVE = 3;

final int FILE_SAVEAS = 4;

final int FILE_QUIT = 5;

Теперь все последующие части программы могут пользоваться переменной FILE_OPEN и прочими так, как если бы они были константами, без риска изменения их значений.

В практике программирования на Java принято идентификаторы всех переменных типа final записывать прописными буквами. Переменные, объявленные как final, не занимают отдельную область памяти для каждого экземпляра – т.е., по сути, они являются константами.

Ключевое слово final можно применять также к методам, но в этом случае его значение существенно отличается от применяемого к переменным. Это второе применение ключевого слова final описано в следующей главе, посвященной наследованию.
1   ...   35   36   37   38   39   40   41   42   ...   67


написать администратору сайта