Вводный курс. Язык программирования Java
- Вводный курс. Язык программирования Java
- Просмотров: 2850
24. Ключевое слово static
Экземпляры объектов одного класса имеют совершенно независимые друг от друга поля, и поэтому содержат разные значения.
Иногда надо определить поле, общее для всего класса, изменение которого в одном экземпляре повлечет изменение того же поля во всех экземплярах. Такие поля называются переменными класса и обозначается модификатором static. Для такого поля выделяется только одна ячейка памяти, общая для всех экземпляров.
Если поле данных класса описано с ключевым словом static, то значение этого поля будут одинаковыми для всей объектов класса.
Вот пример.
В классе объявляется статическая переменная public static int k - счетчик количества точек, которая является общей для всех объектов – точек на плоскости. Доступ к статической переменной возможен из класса без создания объекта, а также из любого объекта класса.
//класс точек
public class StaticPoint {
private int x; //координата x
private int y; //координата y
public static int k; //общая переменная – счетчик количества точек
//конструктор
public StaticPoint(int X, int Y)
{ x=X;
y=Y;
k++; //создана еще одна точка, увеличиваем счетчик
System.out.println("Создано точек k= "+k);
}
}
public class DemoStatic {
public static void main(String[] args) {
System.out.print("Получаем доступ к полю класса без создания объекта, k=");
System.out.println( StaticPoint.k);
System.out.println("Создаем объекты:");
StaticPoint p1 = new StaticPoint(1,1);
StaticPoint p2 = new StaticPoint(1,1);
StaticPoint p3 = new StaticPoint(1,1);
StaticPoint p4 = new StaticPoint(1,1);
System.out.print("Получаем доступ к полю класса без создания объекта, k=");
System.out.println( StaticPoint.k);
}
}
Будет выведено:
Получаем доступ к полю класса без создания объекта, k=0
Создаем объекты:
Создано точек k= 1
Создано точек k= 2
Создано точек k= 3
Создано точек k= 4
Получаем доступ к полю класса без создания объекта, k=4
Для работы со статическими полями создаются статические методы.
Статические методы работают только со статическими полями и методами. При обращении статического метода к обычному полю возникает ошибка.
Особенности:
- в статических методах нельзя использовать ссылки this, super.
- статические методы не могут быть абстактными.