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# Інтерфейсів, про які ви дізнаєтеся більше в наступному розділі.