Sobes.tech
Junior — Middle

Care este diferența principală dintre o clasă abstractă și o interfață în programarea orientată pe obiecte?

sobes.tech AI

Răspuns de la AI

Principala diferență dintre o clasă abstractă și o interfață este că o clasă abstractă poate conține implementări de metode și stare (câmpuri), în timp ce interfața definește doar semnăturile metodelor fără implementare (până la C# 8.0). Clasa abstractă este utilizată atunci când trebuie să stabilești o implementare de bază și funcționalitate comună pentru moștenitori, iar interfața pentru a defini un contract pe care trebuie să îl respecte clasele, indiferent de ierarhia lor.

Exemplu:

// Clasă abstractă
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Mănâncă");
    }
    public abstract void MakeSound();
}

// Interfață
public interface IMovable {
    void Move();
}

// Clasă care moștenește o clasă abstractă și implementează interfața
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Lătrat");
    }
    public void Move() {
        Console.WriteLine("Aleargă");
    }
}