Sobes.tech
Back to questions
Junior — Middle
68

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

Companies where asked
AstonAston
appfox

Answer from AI

sobes.tech AI

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

Пример:

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

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

// Класс, наследующий абстрактный класс и реализующий интерфейс
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Bark");
    }
    public void Move() {
        Console.WriteLine("Run");
    }
}