Top.Mail.Ru

Перечень уроков по Java

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.
  • статические  методы не могут быть абстактными.