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("Тича");
}
}