Share via


Vererbung für Visual Basic 6.0-Benutzer

Aktualisiert: November 2007

Durch Vererbung können Sie neue Klassen aus vorhandenen Klassen erstellen. Vererbung stellt eine Beziehungsstruktur zwischen den verschiedenen Klassen her und kann so den Entwurf der Anwendung vereinfachen. Sie unterstützt auch die Wiederverwendung von Code, weil nur das neue oder andere Klassenverhalten programmiert werden muss.

Schnittstellenvererbung

Visual Basic 6.0

Visual Basic 6.0 unterstützt Schnittstellenvererbung. Ausführliche Informationen dazu erhalten Sie unter Schnittstellenänderungen für Visual Basic 6.0-Benutzer.

Visual Basic 2008

Visual Basic 2008 unterstützt Schnittstellenvererbung mit der Interface-Anweisung (Visual Basic) und der Implements-Anweisung. Weitere Informationen zu Schnittstellen finden Sie unter Schnittstellen in Visual Basic.

Implementierungsvererbung

Wenn eine neue Klasse über Implementierungsvererbung erstellt wird, erhält die neue Klasse automatisch alle Member und Implementierungen der Basisklasse. Die vorhandene Klasse wird als "Basisklasse" bezeichnet. Die neue Klasse ist die "abgeleitete Klasse". Der Klasse können zusätzliche Member hinzugefügt werden. Das Verhalten der Basisklasse kann geändert werden, indem Code in die abgeleitete Klasse geschrieben wird. Diese Technik wird als Überschreiben bezeichnet.

Klassen können erstellt werden durch Vererbung aus von ihnen erstellten Klassen, aus Klassen in Verweisen, die Sie Ihrem Projekt hinfügen oder aus Objekten in .NET Framework. Viele Klassen von .NET Framework sind über Vererbung miteinander verknüpft. So erbt die TextBox-Klasse z. B. von der System.Windows.Forms.TextBoxBase-Klasse.

Visual Basic 6.0

Visual Basic 6.0 unterstützt keine Implementierungsvererbung.

Visual Basic 2008

Vererbung wird in Visual Basic 2008 über die Inherits-Anweisung deklariert. In diesem Beispiel erbt die abgeleitete Oak-Klasse von einer Tree-Basisklasse.

Public Class Oak
    Inherits Tree
    ' Add code here to extend or 
    ' modify the behavior of the Tree class.
End Class

MustInherit und NotInheritable

Visual Basic 6.0

Bei der Schnittstellenvererbung in Visual Basic 6.0 kann jede Klasse als Schnittstellenbasisklasse fungieren. Es gibt keine Syntax, mit der verhindert werden kann, dass eine Klasse als Schnittstellenbasisklasse fungiert. Ebenso gibt es keine Syntax, die angibt, dass eine Klasse nur als Schnittstellenbasisklasse fungieren soll.

Visual Basic 2008

Zusammen mit der Implementierungsvererbung definiert Visual Basic 2008 zwei Klassenmodifizierer, MustInherit und NotInheritable. Diese Modifizierer ermöglichen es dem Programmierer, die Vererbungsbeziehungen in einer Anwendung zu steuern.

Der MustInherit-Modifizierer einer Klassendeklaration gibt eine Klasse an, die nicht instanziiert werden kann:

Public MustInherit Class BaseClass
End Class

Dies bedeutet, dass BaseClass nicht nach dem New-Schlüsselwort auftreten kann. Nur Klassen, die von BaseClass erben und auch keinen MustInherit-Modifizierer besitzen, können instanziiert werden. In der Fachliteratur für die objektorientierte Programmierung und in anderen objektorientierten Sprachen wird eine MustInherit-Klasse als abstrakte Klasse bezeichnet. Eine Klasse, die keine MustInherit-Klasse ist und instanziiert werden kann, wird als konkrete Klasse bezeichnet.

Ein verwandtes Konzept ist die versiegelte Klasse. Hierbei handelt es sich um eine Klasse, die nicht als Basisklasse dienen kann. Das NotInheritable-Schlüsselwort einer Klassendefinition gibt diesen Status an:

Public NotInheritable Class DerivedClass
End Class

Eine NotInheritable-Klasse kennzeichnet die Grenze einer Vererbungshierarchie.

Weitere Informationen hierzu finden Sie unter Vererbung in Visual Basic.

Aktualisierungsvorschläge

Klassen, die als Schnittstellen in Visual Basic 6.0 fungieren, werden zu Schnittstellen in Visual Basic 2008 aktualisiert. Sehen Sie sich dieses Beispiel einer Basisklasse und einer abgeleiteten Klasse von Visual Basic 6.0 an:

' Contents of class BaseClass
Public Sub BaseMethod()
End Sub

' Contents of class DerivedClass
Implements BaseClass
Private Sub BaseClass_BaseMethod()
End Sub

Der Aktualisierungs-Assistent erstellt diesen aktualisierten Code:

Option Strict Off
Option Explicit On
Interface _BaseClass
    Sub BaseMethod()
End Interface

Friend Class BaseClass
    Implements _BaseClass
    Public Sub BaseMethod() Implements _BaseClass.BaseMethod
    End Sub
End Class

Friend Class DerivedClass
    Implements _BaseClass
    Private Sub BaseClass_BaseMethod() Implements _BaseClass.BaseMethod
    End Sub
End Class

Wenn Vererbung anstelle von Schnittstellen verwendet wird, kann der aktualisierte Code folgendermaßen geändert werden:

Friend Class BaseClass
    Public Sub BaseMethod()
        ' Add code here to define BaseMethod.
    End Sub
End Class

Friend Class DerivedClass
    Inherits BaseClass
End Class

Damit wird eine Dereferenzierungsebene (_BaseClass) beseitigt. Außerdem wird eine Methodendefinition (BaseClass_BaseMethod) beseitigt, weil die Methode von der Basisklasse geerbt wird, und der Code nicht noch einmal erstellt werden muss. Wenn der Programmierer ein anderes Verhalten für die abgeleitete Klasse wollte, könnte er die BaseMethod wie folgt überschreiben:

Friend Class BaseClass
    Public Overridable Sub BaseMethod()
        ' Add code here to define BaseMethod.
    End Sub
End Class

Friend Class DerivedClass
    Inherits BaseClass
    Public Overrides Sub BaseMethod()
        ' Add code here to define behavior for DerivedClass.
    End Sub
End Class

Bei aktualisierten Schnittstellen müssen u. a. folgende Techniken berücksichtigt werden:

  • Ersetzen Sie die Interface-Anweisungen durch Inherits-Anweisungen.

  • Implementieren Sie die Basisklasse als Schnittstelle und nicht als Klasse, die eine Schnittstelle implementiert. Weitere Informationen finden Sie unter Schnittstellenänderungen für Visual Basic 6.0-Benutzer.

  • Implementieren Sie Basisklassen als MustInherit-Klassen.

  • Implementieren Sie abgeleitete Klassen als NotInheritable.

Siehe auch

Weitere Ressourcen

Vererbung in Visual Basic

Schnittstellen in Visual Basic