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

Кроме модификатора доступа, перед названием поля, метода или свойства можно написать ключевое слово static. Важно, что слово «static» означает, что данное поле, метод или свойство будет принадлежать не каждому объекту класса, а всем им вместе. Классический пример: как определить, сколько объектов одного класса было создано? Для решения данного вопроса, как раз и служат статические поля и методы.

Давайте разберем на примере с тиграми.  Определим класс «Tiger». Если мы запишем поле класса вот так:  public int count;     то данное поле будет у каждого объекта, и у каждого объекта оно будет своё. Причем, если не создано ни одного объекта, то это поле не будет существовать вообще.
Поэтому cделаем это поле статическим (static).

Создадим конструктор, в котором будем увеличить счетчик count при создании каждого нового объекта:
public Tiger() { count++; }.
Здесь же мы можем задавать индивидуальные характеристики тигра: вес, рост, кличка.

Также напишем статический метод, который выводит количество созданных объектов:
public static void ShowNumberOfObjects().

Тогда в нашем консольном приложении будут два класса:

public class Tiger
{
   public static int count;
   public Tiger()
   {
      count++;
   }
   public static void ShowNumberOfObjects()
   {
      Console.WriteLine("Тигров = {0}", Tiger.count.ToString());
   }
}
class Program
{
   static void Main(string[] args)
   {
      // Чему равно число тигров без создания объектов?
      Tiger.ShowNumberOfObjects();
      // 0, т.к. мы пока не создали объекты
      // Создадим 3 тигров
      Tiger t1 = new Tiger ();
      Tiger t2 = new Tiger ();
      Tiger t3 = new Tiger ();
      Tiger.ShowNumberOfObjects(); // выйдет 3 тигра
      Console.ReadLine();
   }
}

Результат: 3.

Вывод. Статический метод позволяет вызывать его, не имея в наличии ни одного объекта. Вместо имени объекта при вызове метода указывается имя класса Tiger:  Tiger.ShowNumberOfObjects();

Отличия статического метода от нестатического:

1. Для вызова статического метода не нужен объект.
2. Внутри статического метода недоступна переменная this, указывающая на объект, соответственно недоступны все нестатические поля этого класса, т.к. как нет объекта.
3. Внутри обычного метода доступны как статические, так и нестатические поля.
4. Начиная с C# 4.0 появилась возможность и сам класс сделать статическим.

Иногда создают классы, которые состоят только из статических методов, как, например, класс Math. По сути, такие классы являются контейнерами глобальных функций, однако это отходит от концепции ООП. Также нельзя будет создавать, соответственно, и экземпляры статического класса.

Теперь разберемся с понятием «структура» и выясним ее отличие от класса.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x