Junior — Middle
Wat is het verschil tussen het gebruik van een abstracte klasse en een interface bij het definiëren van contracten voor klassen?
sobes.tech AI
Antwoord van AI
Een abstracte klasse en een interface in C# dienen om contracten te definiëren, maar hebben belangrijke verschillen:
- Abstracte klasse kan methoden, velden, constructors en eigenschappen bevatten met implementatie. Het wordt gebruikt wanneer je een basisimplementatie en gemeenschappelijke functionaliteit voor afgeleiden wilt vastleggen.
- Interface definieert alleen de handtekeningen van methoden, eigenschappen en evenementen zonder implementatie (tot C# 8.0; vanaf C# 8.0 kunnen interfaces standaardimplementaties bevatten).
Daarnaast kan een klasse slechts van één abstracte klasse erven, maar meerdere interfaces implementeren.
Voorbeeld:
abstract class Animal
{
public abstract void MakeSound();
public void Sleep() { Console.WriteLine("Slaap"); }
}
interface IFlyable
{
void Fly();
}
class Bird : Animal, IFlyable
{
public override void MakeSound() { Console.WriteLine("Tsirpt"); }
public void Fly() { Console.WriteLine("Vliegen"); }
}
Zo is de abstracte klasse geschikt voor algemeen basishouding, en de interface voor het definiëren van een set mogelijkheden die door verschillende klassen kunnen worden geïmplementeerd.