Junior — Middle
Jaka jest główna różnica między klasą abstrakcyjną a interfejsem w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
Główna różnica między klasą abstrakcyjną a interfejsem polega na tym, że klasa abstrakcyjna może zawierać implementację metod i stan (pola), podczas gdy interfejs definiuje tylko sygnatury metod bez implementacji (do C# 8.0). Klasa abstrakcyjna jest używana, gdy trzeba ustalić podstawową implementację i wspólną funkcjonalność dla dziedziczących, a interfejs — do określenia kontraktu, który muszą spełniać klasy, niezależnie od ich hierarchii.
Przykład:
// Klasa abstrakcyjna
public abstract class Animal {
public void Eat() {
Console.WriteLine("Jedzenie");
}
public abstract void MakeSound();
}
// Interfejs
public interface IMovable {
void Move();
}
// Klasa dziedzicząca po klasie abstrakcyjnej i implementująca interfejs
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Szczekanie");
}
public void Move() {
Console.WriteLine("Biegać");
}
}