Sobes.tech
Junior — Middle

Каква е основната разлика между абстрактен клас и интерфейс в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

Основната разлика между абстрактен клас и интерфейс е, че абстрактният клас може да съдържа реализации на методи и състояние (поля), докато интерфейсът определя само подписите на методите без реализация (до C# 8.0). Абстрактният клас се използва, когато трябва да зададете базова реализация и обща функционалност за наследниците, а интерфейсът — за определяне на контракт, който трябва да изпълнят класовете, независимо от тяхната йерархия.

Пример:

// Абстрактен клас
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Яде");
    }
    public abstract void MakeSound();
}

// Интерфейс
public interface IMovable {
    void Move();
}

// Клас, наследяващ абстрактен клас и реализиращ интерфейс
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Лае");
    }
    public void Move() {
        Console.WriteLine("Тича");
    }
}