July 3, 2020

Lesson 3

Обычно при создании описывается как ведут себя объекты и как выглядят. Сам объект появляется после того как он был создан с помощью ключевого слова new.

Пример ниже:

Foo foo = new Foo();

Бывают ситуации, когда необходимо хранить данные в единственном экземпляре(Не путать с экземпляром класса). Вне зависимости от числа созданных объектов. Бывает ситуация когда необходим метод не привязанный к конкретному классу. Его можно вызвать обратившись к названию класса. Без создания объекта.

Например:

Вероятнее всего вы уже использовали класс Math который хранит такие операции, как квадратный корень, генерация случайного числа, возведение в степень и тд. Подробнее с основными методами данного класса можно ознакомиться тут http://developer.alexanderklimov.ru/android/java/math.php

Класс Math имеет внутри статические методы. Поэтому для того чтобы воспользоваться методом pow, достаточно короткой записи

Math.pow(2,2); - возведет двойку в квадрат

Вместо записи

Math math = new Math();

math.pow(2,2);

Такой функционал доступен если методы наши помечены ключевым словом static.

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

Необходимо заметить, что никакого создания объекта с new не было. Теперь давайте рассмотрим ситуацию, когда мы бы написали данный код иначе. Без использования static.

В классе все тоже самое. Но убран модификатор static. Как видим среда ругается на то что нестатический метод вызывается как статический из статического контекста.

Раз уж мы убрали ключевое слово static, то давайте перепишем код без его использования.

Задание

Изучить класс Math, его возможности по ссылке которую найдете в статье. После чего написать по аналогии свой класс с простыми методами.

  1. Метод возведения числа в степень аналогичный Math.pow();
  2. Метод нахождения квадратного корня аналогичный Math.sqrt()
  3. Завести переменную типа int внутри вашего класса, сделать ее static. Допустим static int counter. Сделать ее недоступной из других классов напрямую(Применить один из модификаторов доступа).
  4. Для заведенной переменной counter необходимо создать два простых статических метода inc, dec - соответственно инкремент(+1) и декремент(-1)

Можно пользоваться гуглом, StackOverflow при условии что вы понимаете что значит код и можете после воспроизвести алгоритм решения(Но плохо ориентируетесь в синтаксисе Java)