Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Иногда требуется определить такой член класса, который будет использоваться независимо от всех остальных объектов этого класса. Как правило, доступ к члену класса организуется посредством объекта этого класса, но в то же время можно создать член класса для самостоятельного применения без ссылки на конкретный экземпляр объекта. Для того чтобы создать такой член класса, достаточно указать в самом начале его объявления ключевое слово static. Если член класса объявляется как static, он становится доступным до создания любых объектов своего класса и без ссылки на какой-нибудь объект. С помощью ключевого слова static можно объявлять как переменные, так и методы. Наиболее характерным примером члена типа static служит метод main (), который объявляется таковым потому, что он должен вызываться виртуальной машиной Java в самом начале выполняемой программы.
Для того чтобы воспользоваться членом типа static за пределами класса, достаточно указать имя этого класса с оператором-точкой. Но создавать объект для этого не нужно. В действительности член типа static оказывается доступным не по ссылке на объект, а по имени своего класса. Так, если требуется присвоить значение 10 переменной count типа static, являющейся членом класса Timer, то для этой цели можно воспользоваться следующей строкой кода:
Timer.count = 10;
Эта форма записи подобна той, что используется для доступа к обычным переменным экземпляра посредством объекта, но в ней указывается имя класса, а не объекта. Аналогичным образом можно вызвать метод типа static, используя имя класса и оператор-точку.
Переменные, объявляемые как static, по существу являются глобальными. Когда же объекты объявляются в своем классе, копия переменной типа static не создается. Вместо этого все экземпляры класса совместно пользуются одной и той же переменной типа static. Ниже приведен пример программы, демонстрирующий отличия переменной, объявленной как static, от обычной переменной экземпляра.
// Применение статической переменной,
class StaticDemo {
int х; // обычная переменная экземпляра
static int у; // статическая переменная — это одна копия,
// совместно используемая всеми объектами.
// возвратить сумму значений переменной экземпляра х и
// статической переменной у.
int sum() {
return х + у;
}
}
class SDemo {
public static void main(String args[]) {
StaticDemo obi = new StaticDemo();
StaticDemo ob2 = new StaticDemo();
// У каждого объекта имеется своя копия переменной экземпляра,
obl.x = 10;
ob2.х = 20;
System.out.println("Of course, obl.x and ob2.x " +
"are independent.");
System.out.println("obi.x: " + obl.x +
"\nob2.x: " + ob2.x);
System.out.println() ;
// Все объекты совместно пользуются одной общей
// копией статической переменной.
System.out.println("The static variable у is shared.");
StaticDemo.y = 19;
System.out.println("Set StaticDemo.y to 19.");
System.out.println("ob1.sum() : " + obl.sum());
System.out.println("ob2.sum(): " + ob2.sum());
System.out.println();
StaticDemo.y = 100;
System.out.println("Change StaticDemo.y to 100");
System.out.println("ob1.sum() : " + ob1.sum());
System.out.println("ob2.sum(): " + ob2.sum());
System.out.println();
}
}
Выполнение этой программы дает следующий результат:
Of course, obl.x and ob2.x are independent,
obl.x: 10
ob2.x: 20
The static variable у is shared.
Set StaticDemo.y to 19.
obi.sum(): 29
ob2.sum(): 39
Change StaticDemo.y to 100
obi.sum(): 110
ob2.sum(): 120