💡 1. Expliziter Polymorphismus in C#
Im Gegensatz zu Java sind Methoden in C# standardmäßig NICHT virtuell. Um eine Methode überschreibbar zu machen, muss sie bewusst als `virtual` gekennzeichnet werden:
public abstract class Shape {
public abstract double CalculateArea(); // Muss überschrieben werden
public virtual void Draw() { // Kann überschrieben werden
Console.WriteLine("Zeichne Standard-Form");
}
}
public class Circle(double radius) : Shape {
public double Radius { get; } = radius;
public override double CalculateArea() => Math.PI * Radius * Radius;
public sealed override void Draw() {
Console.WriteLine($"Zeichne Kreis mit Radius {Radius}");
}
}
In C# kann niemand heimlich dein Design ändern: Nur wenn du dem Schloss einen `virtual`-Stempel aufdrückst, darf eine Unterklasse ihren eigenen Schlüssel (`override`) anwenden!
⚡ 2. Quick-Cheat-Sheet
| Schlüsselwort | Ort | Bedeutung |
|---|---|---|
abstract | Basisklasse / Methode | Keine Implementierung; Unterklasse MUSS implementieren |
virtual | Basisklasse | Erlaubt Unterklassen das Überschreiben via override |
override | Unterklasse | Überschreibt polymorphe virtuelle Methode |
sealed | Unterklasse / Klasse | Verbietet weiteres Überschreiben / Ableiten |
base | Unterklasse | Greift auf Implementierung der Elternklasse zu |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Vergisst man override und schreibt versehentlich nur denselben Methodennamen, verbirgt man die Methode nur; über die Basisklassenreferenz wird trotzdem der alte Code ausgeführt!
Versucht man von einer als sealed markierten Klasse abzuleiten, bricht der Compiler sofort mit einem Fehler ab.
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.