Sobes.tech
Junior — Middle

Was ist der Hauptunterschied zwischen einer abstrakten Klasse und einer Schnittstelle in der objektorientierten Programmierung?

sobes.tech KI

Antwort von AI

Der Hauptunterschied zwischen einer abstrakten Klasse und einer Schnittstelle besteht darin, dass eine abstrakte Klasse Methodenimplementierungen und Zustand (Felder) enthalten kann, während eine Schnittstelle nur die Signaturen der Methoden ohne Implementierung definiert (bis C# 8.0). Eine abstrakte Klasse wird verwendet, wenn eine Basiseinrichtung und gemeinsame Funktionalität für Erben festgelegt werden sollen, während eine Schnittstelle dazu dient, einen Vertrag zu definieren, den Klassen unabhängig von ihrer Hierarchie erfüllen müssen.

Beispiel:

// Abstrakte Klasse
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Fressen");
    }
    public abstract void MakeSound();
}

// Schnittstelle
public interface IMovable {
    void Move();
}

// Klasse, die von der abstrakten Klasse erbt und die Schnittstelle implementiert
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Bellen");
    }
    public void Move() {
        Console.WriteLine("Laufen");
    }
}