Мы помогаем ИТ-компаниям оптимально настроить процессы менеджмента и разработки

Найти

(067) 536-87-70

(095) 492-65-67

 

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

15.08.19

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

public class Basket {
  //статический массив и переменная
  private static MagicApple[] basket = new MagicApple[2];
  private static int counter;

  static { //статический блок
    counter = 0;
    System.out.println("Static");
  }
  public Basket() {
    System.out.println("Constructor");
  }
  public void addToBasket(MagicApple apple) {
    if (counter < basket.length) {
      basket[counter] = apple;
      counter++;
      System.out.println("We have " + counter + " apple(s) in the basket");
    } else {
      System.out.println("Basket is full we can't place here " + apple.getColor() + " apple");
    }
}
public static void staticMethod() { //статический метод
  System.out.println("Static method");
  }
}

public class Main {
  public static void main(String args[]) {
    MagicApple redApple = new MagicApple("red");
    MagicApple yellowApple = new MagicApple("yellow");
    MagicApple blueApple = new MagicApple("blue");
    Basket basket = new Basket();
    Basket basket2 = new Basket();
    //вызов метода без создания объекта класса
    Basket.staticMethod();
    //вызовы обычных методов
    basket.addToBasket(redApple);
    basket.addToBasket(yellowApple);
    basket2.addToBasket(blueApple);
  }
}

Яблоки

Перед запуском программы не забудьте создать класс MagicApple с полем color, конструктором, который задает значение этому полю и методом getColor. После этого вы сможете запустить программу и увидите, что статический блок отрабатывает раньше, чем конструктор. Статический метод можно вызвать без создания объекта класса. Также можно заметить, что объявление новой корзины не создало новую переменную basket, а продолжило класть в ту же корзину. Это потому, что она статическая и не относится к объекту, но к классу. 

В следующий раз мы наконец-то обсудим принципы ООП (объектно-ориентированное программирование). Это откроет новые возможности для создания и использования классов в Java.