JavaRush /Курси /C# SELF /Статичні поля та методи

Статичні поля та методи

C# SELF
Рівень 12 , Лекція 1
Відкрита

1. Поля обʼєкта: тут обʼєкт зберігає свої дані

У C# (і взагалі у більшості мов програмування) часто кажуть: «усе — обʼєкт». Обʼєкт — це «віртуальний предмет» у памʼяті компʼютера, який може щось зберігати (дані) і виконувати дії (методи). Іншими словами, обʼєкт має стан (поля, дані) і поведінку (методи).

Приклади обʼєктів:

  • Кіт у грі (Cat)
  • Користувач сайту (User)
  • Книга у бібліотеці (Book)
  • Машина на паркінгу (Car)

Коли ви створюєте обʼєкт — ви ніби робите копію шаблону (класу), і ця копія може працювати зі своїми власними даними.

Поля — це змінні, що містяться всередині обʼєкта і зберігають його індивідуальні дані.

Приклад з життя

У кожного кота є імʼя, вік, колір. Ці дані індивідуальні — у кожного кота свої.


public class Cat
{
    public string Name;  // Імʼя кота — поле обʼєкта
    public int Age;      // Вік кота — поле обʼєкта
    public string Color; // Колір кота — поле обʼєкта
}
Приклад оголошення полів обʼєкта

Коли створюємо обʼєкти:

Cat cat1 = new Cat();
cat1.Name = "Барсик";
cat1.Age = 2;
cat1.Color = "сірий";

Cat cat2 = new Cat();
cat2.Name = "Мурка";
cat2.Age = 5;
cat2.Color = "чорний";

У кожного обʼєкта — свої значення полів!

Обʼєкт Name Age Color
cat1 Барсик 2 сірий
cat2 Мурка 5 чорний

Поле — це внутрішня «кишеня» обʼєкта, куди він може щось покласти.

2. Методи обʼєкта: що обʼєкт уміє робити

Метод — це дія, уміння або функція обʼєкта. Це фрагмент коду, який можна викликати в обʼєкта.

Приклад з життя

У кота є дії: він може нявкати, бігати, їсти.


public class Cat
{
    public string Name;
    public void Meow()
    {
        Console.WriteLine($"{Name} каже: Мяу!");
    }

    public void Sleep()
    {
        Console.WriteLine($"{Name} спить.");
    }
}
Приклад методів обʼєкта

Використання:

Cat cat1 = new Cat();
cat1.Name = "Барсик";
cat1.Meow();   // Барсик каже: Мяу!
cat1.Sleep();  // Барсик спить.

У кожного обʼєкта — свої методи, і вони використовують його особисті поля!

3. Статичні поля (static fields): спільні дані

Іноді потрібно зберігати в полі не індивідуальні дані обʼєкта, а спільну інформацію для всього класу. Наприклад, рахувати, скільки котів створено загалом, або задати спільну для всіх котів «максимальну гучність».

Для цього у C# використовують статичні поля — їх оголошують за допомогою слова static.


public class Cat
{
    public string Name;
    public static int Count = 0; // Статичне поле

    public Cat(string name)
    {
        Name = name;
        Count++; // Збільшуємо загальний лічильник котів
    }
}

// Робота з класом Cat
Cat c1 = new Cat("Барсик");
Cat c2 = new Cat("Мурка");

Console.WriteLine(Cat.Count); // 2 — спільне для всіх обʼєктів
Приклад використання статичного поля

Статичне поле — одне на весь клас; його спільно використовують усі обʼєкти.
До нього зазвичай звертаються через імʼя класу: Cat.Count.

4. Статичні методи (static methods)

Статичний метод — це метод, який не привʼязаний до конкретного обʼєкта, а належить усьому класу.

  • Такий метод можна викликати без створення обʼєкта.
  • Всередині статичного методу не можна звертатися до звичайних (нестатичних) полів і методів — оскільки конкретного обʼєкта немає!

public class MathUtils
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}
Приклад статичного методу

Використання:

int sum = MathUtils.Add(2, 3); // 5

Статичні методи часто використовують для утиліт — функцій, які не залежать від стану обʼєкта.

Ви вже знайомі з багатьма статичними методами:

Console.WriteLine();
Console.ReadLine();

Math.Round();
Math.Truncate();

5. Порівнюємо методи і поля

Що це? Як оголошувати? Де зберігається? Для чого? Як звертатися?
Поле обʼєкта
public string Name;
У кожному обʼєкті Особисті дані обʼєкта cat1.Name, cat2.Name
Метод обʼєкта
public void Meow(){}
У кожному обʼєкті Дії, що використовують поля обʼєкта cat1.Meow()
Статичне поле
public static int C;
Одне на весь клас Спільні дані для всіх обʼєктів Cat.C
Статичний метод
public static ...
Одне на весь клас Спільні «уміння», які не залежать від обʼєкта Cat.Method()

7. Ілюстрація

Звичайні поля й методи:


.     +-----------------+
cat1: | Name = "Барсик" |
      | Age = 2         |
      +-----------------+

      +------------------+
cat2: | Name = "Мурка"   |
      | Age = 5          |
      +------------------+

Статичне поле Count:

Cat.Count = 2    // одне спільне для всіх котів

Виклик методів:

cat1.Meow();   // Барсик каже: Мяу!
cat2.Meow();   // Мурка каже: Мяу!

Виклик статичного методу:

MathUtils.Add(2, 3); // 5

Підсумки

  • Поля — відповідають за індивідуальні характеристики кожного обʼєкта (властивості).
  • Методи — описують, що вміє робити обʼєкт.
  • Статичні поля — підходять для зберігання «спільних» даних (наприклад, лічильник, глобальні налаштування).
  • Статичні методи — застосовують для операцій, які не залежать від конкретного обʼєкта (наприклад, математичні функції).

8. Часті запитання

Чи можна звернутися до статичного поля через обʼєкт?
Технічно — так (cat1.Count); однак прийнято звертатися через клас (Cat.Count), щоб не плутати себе й інших.

Чи можна викликати нестатичний метод без створення обʼєкта?
Ні, оскільки такий метод завжди працює з конкретним обʼєктом і його даними.

Чи можна у статичному методі використовувати звичайні поля й методи?
Ні — бо статичний метод не знає, до якого обʼєкта звертатися.

Чи можна створити «повністю статичний» клас?
Так, для цього оголошують static class — його не можна створити через new, і всі члени такого класу мають бути статичними.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ