Kapitel 6. Vererbung

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

C#-Klassen unterstützen Vererbung, einen beliebten objektorientierten Mechanismus zur Wiederverwendung von Code. Wenn du eine Klasse schreibst, kannst du optional eine Basisklasse angeben. Deine Klasse wird von dieser abgeleitet, d. h. alles, was in der Basisklasse enthalten ist, ist auch in deiner Klasse vorhanden, ebenso wie alle Mitglieder, die du hinzufügst.

Klassen unterstützen nur Einfachvererbung (du kannst also nur eine Basisklasse angeben). Interfaces bieten eine Form der Mehrfachvererbung. Wertetypen unterstützen überhaupt keine Vererbung. Ein Grund dafür ist, dass Wertetypen normalerweise nicht per Referenz verwendet werden, wodurch einer der Hauptvorteile der Vererbung wegfällt: die Polymorphie zur Laufzeit. Vererbung ist nicht zwangsläufig unvereinbar mit wertähnlichem Verhalten - einige Sprachen beherrschen es -, aber es gibt oft Probleme. Wenn zum Beispiel ein Wert eines abgeleiteten Typs einer Variablen des Basistyps zugewiesen wird, gehen alle Felder verloren, die der abgeleitete Typ hinzugefügt hat - ein Problem, das als Slicing bekannt ist. C# umgeht dieses Problem, indem es die Vererbung auf Referenztypen beschränkt. Wenn du eine Variable eines abgeleiteten Typs einer Variablen eines Basistyps zuweist, kopierst du eine Referenz, nicht das Objekt selbst, sodass das Objekt intakt bleibt. Slicing ist nur dann ...

Get C# 8.0 programmieren now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.