Freigeben über


Entwurf abstrakter Klassen

Da abstrakte Klassen niemals instanziiert werden sollten, müssen ihre Konstruktoren ordnungsgemäß definiert werden. Außerdem muss sichergestellt werden, dass die Funktionalität der abstrakten Klasse ordnungsgemäß ist und einfach erweitert werden kann. Anhand der folgenden Richtlinien können Sie sicherstellen, dass abstrakte Klassen ordnungsgemäß entworfen und wie erwartet ausgeführt werden, wenn sie implementiert werden.

Definieren Sie keine public-Konstruktoren oder protected internal-Konstruktoren (Protected Friend in Visual Basic) in abstrakten Typen.

Konstruktoren mit der Sichtbarkeit public oder protected internal sind für Typen geeignet, die instanziiert werden können. Abstrakte Typen können nicht instanziiert werden.

Definieren Sie in abstrakten Klassen einen protected-Konstruktor oder einen internal-Konstruktor.

Wenn Sie in einer abstrakten Klasse einen protected-Konstruktor definieren, kann die Basisklasse Initialisierungsaufgaben ausführen, wenn Instanzen einer abgeleiteten Klasse erstellt werden. Ein interner Konstruktor verhindert, dass die abstrakte Klasse als Basisklasse von Typen verwendet wird, die sich nicht in derselben Assembly wie die abstrakte Klasse befinden.

Stellen Sie mindestens einen konkreten Typ bereit, der von jeder abstrakten Klasse erbt, die Sie veröffentlichen.

Diese Vorgehensweise erleichtert Bibliotheksentwicklern das Auffinden von Problemen oder Flüchtigkeitsfehlern im Entwurf der abstrakten Klasse. Sie ermöglicht es außerdem, dass Entwickler, die möglicherweise die Konzepte von abstrakten Klassen und Vererbung nicht verstehen, in komplexen Szenarien die konkrete Klasse verwenden können, ohne mit diesen Konzepten vertraut sein zu müssen. Beispielsweise stellt .NET Framework die abstrakten Klassen WebRequest und WebResponse bereit, um das Senden von Anforderungen an einen URI und das Empfangen von Antworten von einem URI zu behandeln. Das Framework enthält als eine von mehreren konkreten Implementierungen für diese abstrakten Klassen die HttpWebRequest-Klasse und die HttpWebResponse-Klasse, bei denen es sich um HTTP-spezifische Implementierungen der abstrakten Klassen handelt.

Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.

Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.

Weitere Informationen zu Entwurfsrichtlinien finden Sie unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.

Siehe auch

Konzepte

Auswählen zwischen Klassen und Schnittstellen

Weitere Ressourcen

Richtlinien für den Entwurf von Typen

Entwurfsrichtlinien zum Entwickeln von Klassenbibliotheken