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ă");
}
}