НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування C#. Уроки W3Schools українською для початківців

En Es De

C# Абстракція


Абстрактні класи та методи

Абстрагування даних – це процес приховування певних деталей і показу лише важливої інформації користувачеві.
Абстрагування можна досягти за допомогою абстрактних класів або інтерфейсів (про які ви дізнаєтеся більше в наступному розділі).

Ключове слово abstract використовується для класів і методів:

  • Абстрактний клас: це обмежений клас, який не можна використовувати для створення об’єктів (щоб отримати до нього доступ, його потрібно успадкувати від іншого класу).
  • Абстрактний метод: можна використовувати лише в абстрактному класі, і він не має тіла. Тіло надається похідним класом (успадкованим від іншого).

Абстрактний клас може мати як абстрактні, так і регулярні методи:

abstract class Animal
{
  public abstract void animalSound();
  public void sleep()
  {
    Console.WriteLine("Zzz");
  }
}

З наведеного вище прикладу неможливо створити об’єкт класу Animal:

Animal myObj = new Animal(); // Викличе помилку (не вдається створити екземпляр абстрактного класу або інтерфейсу 'Animal')

Щоб отримати доступ до абстрактного класу, його потрібно успадкувати від іншого класу. Давайте перетворимо клас Animal, який ми використовували в розділі C# Поліморфізм, на абстрактний клас.

Пам’ятайте з розділу C# Спадкування, що ми використовуємо символ двокрапки : для успадкування від класу та що ми використовуємо ключове слово override для заміни методу базового класу.

Приклад

// Абстрактний клас
abstract class Animal
{
  // Абстрактний метод (не має тіла)
  public abstract void animalSound();
  // Звичайний метод
  public void sleep()
  {
    Console.WriteLine("Zzz");
  }
}

// Похідний клас (успадкований від Animal)
class Pig : Animal
{
  public override void animalSound()
  {
    // Тіло animalSound() надається тут
    Console.WriteLine("Свиня каже: хрю хрю");
  }
}

class Program
{
  static void Main(string[] args)
  {
    Pig myPig = new Pig(); // Створити об’єкт Pig
    myPig.animalSound();  // Викликати абстрактний метод
    myPig.sleep();  // Викликати звичайний метод
  }
}

Спробуйте самі »

Навіщо і коли використовувати абстрактні класи та методи?

Щоб забезпечити безпеку, приховайте певні деталі та показуйте лише важливі деталі об’єкта.

Примітка: абстракції також можна досягти за допомогою C# Інтерфейсів, про які ви дізнаєтеся більше в наступному розділі.