Überschreiben von Eigenschaften und Methoden

Aktualisiert: November 2007

Eine abgeleitete Klasse erbt die Eigenschaften und Methoden, die in ihrer Basisklasse definiert sind. Dies ist sinnvoll, da Sie diese Elemente wiederverwenden können, wenn sie sich für die abgeleitete Klasse eignen. Wenn die Eigenschaft oder Methode in der Basisklasse mit dem Overridable-Schlüsselwort gekennzeichnet ist, können Sie in der abgeleiteten Klasse eine neue Implementierung für den Member definieren. Verwenden Sie das Overrides-Schlüsselwort, um ein Shadowing für den Member durchzuführen, indem Sie ihn in der abgeleiteten Klasse neu definieren. Dies ist hilfreich, wenn Sie den Member nicht unverändert verwenden können.

In der Praxis werden überschriebene Member oft für den Einsatz von Polymorphismus verwendet. Weitere Informationen finden Sie unter Polymorphismus.

Für das Überschreiben von Methoden gelten folgende Regeln:

  • Sie können nur Member überschreiben, die in ihrer Basisklasse durch das Overridable-Schlüsselwort gekennzeichnet sind.

  • Eigenschaften und Methoden sind standardmäßig NotOverridable.

  • Überschriebene Member müssen dieselben Argumente aufweisen wie die geerbten Member aus der Basisklasse.

  • Die neue Implementierung eines Members kann die ursprüngliche Implementierung in der übergeordneten Klasse aufrufen, indem Sie vor dem Methodennamen MyBase angeben.

    Hinweis:

    Überladen, Überschreiben und Shadowing sind ähnliche Konzepte, die leicht verwechselt werden können. Weitere Informationen finden Sie unter Einführung in Objekte in Visual Basic.

Beispiel

Angenommen, Sie möchten Klassen definieren, um die Gehaltsliste zu verwalten. Sie können eine allgemeine Payroll-Klasse (Gehaltslistenklasse) definieren, die eine RunPayroll-Methode enthält, mit der das Gehalt für eine typische Woche berechnet wird. Sie können anschließend Payroll als Basisklasse für eine spezialisiertere BonusPayroll-Klasse verwenden, die beim Verteilen der Mitarbeiterboni verwendet wird.

Die BonusPayroll-Klasse kann die PayEmployee-Methode erben und überschreiben, die in der Payroll-Basisklasse definiert ist.

Im folgenden Beispiel wird eine Payroll-Basisklasse sowie eine abgeleitete Klasse mit dem Namen BonusPayroll definiert, die eine geerbte PayEmployee-Methode überschreibt. Eine Prozedur mit dem Namen RunPayroll erstellt ein Payroll-Objekt und leitet dieses zusammen mit einem BonusPayroll-Objekt an die Pay-Funktion weiter, die die PayEmployee-Methode beider Objekte ausführt.

Const BonusRate As Decimal = 1.45D
Const PayRate As Decimal = 14.75D

Class Payroll
    Overridable Function PayEmployee( _
        ByVal HoursWorked As Decimal, _
        ByVal PayRate As Decimal) _
        As Decimal

        PayEmployee = HoursWorked * PayRate
    End Function
End Class

Class BonusPayroll
    Inherits Payroll
    Overrides Function PayEmployee( _
        ByVal HoursWorked As Decimal, _
        ByVal PayRate As Decimal) _
        As Decimal

        ' The following code calls the original method in the base 
        ' class, and then modifies the returned value.
        PayEmployee = MyBase.PayEmployee(HoursWorked, PayRate) * BonusRate
    End Function
End Class

Sub RunPayroll()
    Dim PayrollItem As Payroll = New Payroll
    Dim BonusPayrollItem As New BonusPayroll
    Dim HoursWorked As Decimal = 40

    MsgBox("Normal pay is: " & _
        PayrollItem.PayEmployee(HoursWorked, PayRate))
    MsgBox("Pay with bonus is: " & _
        BonusPayrollItem.PayEmployee(HoursWorked, PayRate))
End Sub

Siehe auch

Konzepte

Überladene Eigenschaften und Methoden

Überschreibungsmodifizierer

Shadowing in Visual Basic

Weitere Ressourcen

Polymorphismus