Back to questions
Aston
Junior — Middle
68
Какое основное отличие между абстрактным классом и интерфейсом в объектно-ориентированном программировании?
Companies where asked
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");
}
}