Visual Studio .NET-Übungsreihe: Vererbung

Visual Studio .NET 2003
Veröffentlicht: 20. Sep 2001 | Aktualisiert: 07. Nov 2004

In dieser Übung erstellen Sie eine einfache Anwendung in Visual Basic .NET, die das Konzept der Objektvererbung demonstriert.

Auf dieser Seite

Einführung Einführung
Vererbungsanweisungen und -modifizierer Vererbungsanweisungen und -modifizierer
Vererbungsbeispiel 1 Vererbungsbeispiel 1
Vererbungsbeispiel 2 Vererbungsbeispiel 2
Abschließen von Übung 7 Abschließen von Übung 7
Anweisungen zum Zurücksetzen Anweisungen zum Zurücksetzen

Einführung

In dieser Übung erstellen Sie eine einfache Anwendung, die das Konzept der Objektvererbung demonstriert.

Microsoft Visual Basic .NET unterstützt Vererbung, indem Sie Klassen definieren können, die für andere abgeleitete Klassen als Basisklassen dienen. Die abgeleiteten Klassen erben die Eigenschaften, Methoden, Ereignisse und Datenelemente der Basisklasse und können diese erweitern. Abgeleitete Klassen können zudem vererbte Methoden mit neuen Implementierungen von Basismethoden außer Kraft setzen. Standardmäßig können alle Klassen vererbt werden. Formulare, die eigentlich Klassen sind, können mit der Vererbung neue Formulare definieren, die auf vorhandenen Formularen basieren.

Vererbungsanweisungen und -modifizierer

Visual Basic .NET führt einige Anweisungen und Modifizierer ein, die die Vererbung unterstützen. Diese werden in der folgenden Tabelle beschrieben:

Anweisung/Modifzierer

Beschreibung

Inherits

Inherits-Anweisung – Gibt die Klasse (auch Basisklasse genannt) an, von der die aktuelle Klasse erbt. Das Inherits-Schlüsselwort ist nur in Klassen und Schnittstellen zulässig.

NotInheritable

NotInheritable-Modifizierer – Verhindert, dass Programmierer die Klasse als Basisklasse verwenden.

MustInherit

MustInherit-Modifizierer – Gibt an, dass in einer bestimmten Klasse keine Instanzen erstellt werden können. Diese Klasse kann nur über Vererbung verwendet werden.

Overridable

Overridable-Modifizierer – Lässt zu, dass eine Eigenschaft oder Methode in einer erbenden Klasse außer Kraft gesetzt wird. Öffentliche Methoden sind standardmäßig als NotOverridable deklariert.

Overrides

Overrides-Modifizierer – Ermöglicht es, eine Eigenschaft oder Methode außer Kraft zu setzen, die in der Basisklasse definiert ist.

NotOverridable

NotOverridable-Modifizierer (Standard) – Verhindert, dass eine Eigenschaft oder Methode in einer erbenden Klasse außer Kraft gesetzt wird.

MustOverride

MustOverride-Modifizierer – Erfordert, dass die vererbende Klasse die Eigenschaft bzw. Methode außer Kraft setzt. Wenn das MustOverride-Schlüsselwort verwendet wird, besteht die Methodendefinition lediglich aus der Sub-, Function- oder Property-Anweisung. Es sind keine anderen Anweisungen zulässig, und es gibt keine End Sub-, End Function- oder End Property-Anweisung. Klassen mit MustOverride-Methoden müssen als MustInherit deklariert werden. Öffentliche Methoden sind standardmäßig als NotOverridable deklariert.

Shadows

Shadows-Modifizierer – Ermöglicht die Wiederverwendung von Namen von vererbten Klassenmitgliedern. Wenn ein Name wieder verwendet wird (Shadowing), werden die vererbten Typenmitglieder mit diesem Namen nicht entfernt – alle vererbten Typenmitglieder (einschließlich der überladenen und außer Kraft gesetzten Mitglieder) sind dadurch für abgeleitete Klassen nicht verfügbar. Durch Shadowing wird das Klassenmitglied in der abgeleiteten Klasse neu deklariert.

Bestimmte Kombinationen dieser Anweisungen und Modifizierer sind nicht zulässig:

  • Overridable und NotOverridable schließen sich gegenseitig aus und können nicht gemeinsam verwendet werden.

  • NotOverridable kann nicht gemeinsam mit Overridable oder MustOverride kombiniert werden.

  • Overrides impliziert Overridable und kann nicht mit MustOverride verwendet werden.

  • MustOverride impliziert Overridable und kann nicht gemeinsam mit NotOverridable verwendet werden.

  • MustOverride-Methoden können andere Methoden nicht außer Kraft setzen und daher nicht mit dem Overrides-Modifizierer kombiniert werden.

Vererbungsbeispiel 1

Sie erstellen mit der integrierten Entwicklungsumgebung (IDE) von Microsoft Visual Studio .NET eine einfache ausführbare Anwendung.

  1. Öffnen Sie die IDE, indem Sie auf Start, Programme, Microsoft Visual Studio .NET und Microsoft Visual Studio .NET klicken. Die Startseite wird angezeigt.

  2. Erstellen Sie ein neues Projekt, indem Sie auf Neues Projekt klicken. Das Fenster Neues Projekt wird angezeigt.

  3. Klicken Sie im Feld Projekttypen auf Visual Basic-Projekte.

  4. Klicken Sie im Feld Vorlagen auf Leeres Projekt.

  5. Klicken Sie auf OK.

  6. Klicken Sie im Menü Projekt auf Klasse hinzufügen, um dem Projekt eine Klasse hinzuzufügen.

  7. Geben Sie A.vb in das Feld Name ein.

  8. Klicken Sie auf Öffnen. Daraufhin wird eine leere Klasse wie in Abbildung 1 angezeigt.

    exp2

    Abbildung 1 Leere Klasse

  9. Geben Sie über der öffentlichen Klasse A den folgenden Code ein:

    Imports System 
    Imports System.Console
    
  10. Fügen Sie den folgenden Code ein, um Klasse A abzuschließen:

    Class A 
        Public Sub F() 
            Console.WriteLine("A.F") 
        End Sub 
        Public Overridable Sub G() 
            Console.WriteLine("A.G") 
        End Sub 
    End Class 
    
  11. Geben Sie den folgenden Code unter Klasse A ein:

    Class B 
        Inherits A 
        Public Shadows Sub F() 
            Console.WriteLine("B.F") 
        End Sub 
        Public Overrides Sub G() 
            Console.WriteLine("B.G") 
        End Sub 
    End Class 
    

    Im folgenden Codeabschnitt deklarieren Sie zwei Objekte und rufen ihre beiden Methoden auf, um die Ergebnisse anzuzeigen:

    Class Test 
        Shared Sub Main() 
            Dim b As New B() 
            Dim a As A = b 
            a.F() 
            b.F() 
            a.G() 
            b.G() 
        End Sub 
    End Class 
    
  12. Drücken Sie F5, um die Anwendung auszuführen. Das Fenster Ausgabe wird mit den Ergebnissen wie in Abbildung 2 angezeigt.

    exp4

    Abbildung 2. Ausgabeergebnisse von Vererbungsbeispiel 1

    Anmerkung Die Ergebnisse für b.F() und b.G() sind zu erwarten. Beachten Sie jedoch, dass die a.G()-Anweisung B.G aufruft, nicht A.G. Der Grund dafür ist, dass wir zugelassen haben, dass Methode G in Klasse A außer Kraft gesetzt wird. Die eigentliche Methodenimplementierung wird zur Laufzeit durch Methode G in Klasse B ermittelt, die die von Klasse A geerbte Methode außer Kraft setzt. Die Möglichkeit, die Methodenimplementierung der Kompilierzeit zu ändern, macht die Vererbung zu einem leistungsfähigen Feature der objektorientierten Programmierung.

  13. Klicken Sie auf Datei und Projektmappe schließen.
    Lassen Sie die IDE für das nächste Beispiel geöffnet.

Vererbungsbeispiel 2

In diesem Beispiel wird die Vererbung genauer erläutert.

  1. Klicken Sie auf Datei, Neu und Projekt, um das Fenster Neues Projekt zu öffnen.

  2. Klicken Sie im Feld Projekttypen auf Visual Basic-Projekte und im Feld Vorlagen auf Leeres Projekt.

  3. Klicken Sie auf OK.

  4. Fügen Sie dem Projekt eine Klasse hinzu, indem Sie im Menü Projekt auf Klasse hinzufügen klicken.

  5. Geben Sie A.vb in das Feld Name ein.

  6. Klicken Sie auf Öffnen. Daraufhin wird eine leere Klasse angezeigt.

  7. Geben Sie über der öffentlichen Klasse A den folgenden Code ein:

    Imports System 
    Imports System.Console 
    
  8. Fügen Sie den folgenden Code ein, um Klasse A abzuschließen:

    Class A 
        Public Overridable Sub F() 
            Console.WriteLine("A.F") 
        End Sub  
    End Class  
    
  9. Geben Sie den folgenden Code unter Klasse A ein:

    Class B 
        Inherits A 
        Public Overrides Sub F() 
            Console.WriteLine("B.F") 
        End Sub  
    End Class  
    Class C 
        Inherits B 
        Public Shadows Overridable Sub F() 
            Console.WriteLine("C.F") 
        End Sub  
    End Class  
    Class D 
        Inherits C 
        Public Overrides Sub F() 
            Console.WriteLine("D.F") 
        End Sub  
    End Class  
    

    Im folgenden Codeabschnitt deklarieren Sie vier Objekte und rufen ihre Methoden auf, um die Ergebnisse anzuzeigen:

    Class Test 
        Shared Sub Main() 
            Dim d As New D() 
            Dim a As A = d 
            Dim b As B = d 
            Dim c As C = d 
            a.F() 
            b.F() 
            c.F() 
            d.F() 
        End Sub  
    End Class 
    
  10. Drücken Sie F5, um die Anwendung auszuführen. Das Fenster Ausgabe wird mit den Ergebnissen wie in Abbildung 3 angezeigt.

    exp22

    Abbildung 3. Ausgabeergebnisse von Vererbungsbeispiel 2

    Anmerkung Klasse A enthält eine Overridable-Methode. Klasse B enthält eine Override-Methode. Klasse A und Klasse B ähneln sehr dem ersten Beispiel. Klasse B erbt Klasse A und setzt Methode F außer Kraft, wodurch die Laufzeitimplementierung von Methode F außer Kraft gesetzt wird. Sowohl a.F() als auch b.F() rufen B.F auf, da Methode F in Klasse A durch Override-Methode F in Klasse B außer Kraft gesetzt wird.

    Klasse C enthält eine weitere Overridable-Methode, die gleichzeitig eine Shadows-Methode ist. Dies bedeutet, dass diese Methode für die Kompilierungszeitimplementierung der geerbten Methode F Shadowing durchführt oder dass sie außer Kraft gesetzt werden kann, wenn eine andere Klasse diese Methode erbt. Klasse D erbt Klasse C. Klasse D enthält eine Override-Methode, die die Laufzeitimplementierung von Methode F in Klasse C ändert. D.F wird daher von c.F() und d.F() aufgerufen.

    Da Methoden für vererbte Methoden Shadowing durchführen können, kann eine Klasse mehrere Overridable-Methoden mit derselben Signatur enthalten. Dadurch entsteht jedoch keine Zweideutigkeit, da außer der am stärksten abgeleiteten Methode alle Methoden ausgeblendet sind und daher nicht auf sie zugegriffen werden kann. So kann kein Namenskonflikt entstehen.

    Sie können auf die Overridable-Shadowing-Methode zugreifen, indem Sie über einen weniger abgeleiteten Typ, in dem die Methode nicht ausgeblendet ist, auf eine Instanz von D zugreifen.

Abschließen von Übung 7

Schließen Sie alle Fenster, wenn Sie die Projektdateien angezeigt haben.

Anweisungen zum Zurücksetzen

Sie können alle übungsbezogenen Daten von Ihrem Computer löschen, indem Sie das HOLT1-01 Experience Visual Studio .NET.msi-Installer-Paket und die Skriptdatei Reset.vbs verwenden.

Führen Sie die folgenden Schritte aus, um den Computer zurückzusetzen.

  1. Doppelklicken Sie auf HOLT1-01 Experience Visual Studio .NET.msi. Der InstallShield-Assistent wird angezeigt.

  2. Klicken Sie auf Next. Das Fenster Program Maintenance wird angezeigt.

  3. Wählen Sie Remove, und klicken Sie auf Next. Daraufhin wird das Fenster Remove the Program angezeigt.

  4. Klicken Sie auf Remove. Alle übungsbezogenen Dateien und Ordner werden entfernt.

  5. Klicken Sie auf Finish.
    Dadurch werden alle Verknüpfungen aus dem Menü Start entfernt.

  6. Doppelklicken Sie auf Reset.vbs. Wenn das Fenster Windows Script Host geöffnet wird, klicken Sie auf OK.

So führen Sie die Übungen erneut aus

  1. Installieren Sie HOLT1-01 Experience Visual Studio .NET.MSI.

  2. Führen Sie Setup.vbs aus.


Anzeigen: