Im Rahmen der objektorientierten Programmierung besteht die Möglichkeit, eine Methode in einer abgeleiteten Klasse zu überschreiben, d.h. neu zu implementieren und somit Polymorphie zu erzielen. Zum Beispiel: Public MustInherit Class Tier Public MustOverride Sub Schreien() ... End Class Eine Implementation könnte sein: Public Class Katze Inherits Tier Public Overrides Sub Schreien() ' Miauen ... End Sub ... End Class Eine weitere Implementation: Public Class Hund Inherits Tier Public Overrides Sub Schreien() ' Bellen ... End Sub ... End Class Das Problem bei diesem Code liegt darin, dass in den überschriebenen Methoden so gut wie jede Implementation möglich ist. Wenn aber z. B. die Basisklasse eine bestimmte Implementation erwartet, nämlich eine bestimmte Codesequenz, etwa den Aufruf der "Sub Wecke_Herrchen (Herrchen As Object)", dann stellt sich die Frage, wie das realisiert werden kann. Möglich wäre zunächst, in der Basisklasse "Tier" die Methode so zu definieren... Public Overridable Sub Schreien() Wecke_Herrchen(Herrchen) End Sub ...und für abgeleitete Klassen in der Dokumentation vorzuschreiben, dass jede überschriebene Version der Methode "Schreien" den Aufruf "MyBase.Schreien" enthalten muss. Das kann aber nicht erzwungen werden. Die hier vorgestellte Lösung beruht darauf, dass nicht nur als "Public" deklarierte Methoden als überschreibbar deklariert werden können, sondern auch solche, die als "Protected" deklariert sind, und auch die Methoden der Basisklasse die überschriebenen Versionen dieser Methoden aufrufen. In der Basisklasse "Tier" kann die Methode Schreien somit als nicht überschreibbar wie folgt codiert werden: Public Sub Schreien() Schrei_was_du_willst Wecke_Herrchen (Herrchen) End Sub Sodann ist folgende Definition einzufügen: Protected MustOverride Sub Schrei_was_du_willst() In der abgeleiteten Klasse "Katze" etwa wäre dann wie folgt zu codieren: Protected Overrides Sub Schrei_was_du_willst() ' Miauen ... End Sub Auf diese Weise ist im Sinne der Polymorphie wie der angestrebten Funktionalität das gewünschte Ergebnis erreicht: Der Hund bellt, die Katze miaut und das Herrchen wird in jedem Fall geweckt. Dieser Tipp wurde bereits 11.331 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |