天天看點

執行個體021類的繼承Inherits StatementMustInherit NotInheritable繼承的基礎知識 (Visual Basic)

Inherits Statement

導緻目前類或接口繼承其他類或接口集的屬性、變量、屬性、過程和事件。

MustInherit 

指定類隻能用作基類,并且不能直接從其建立對象。

NotInheritable

指定類不能用作基類。

繼承的基礎知識 (Visual Basic)

Inherits

語句用于根據稱為基類的新類(稱為派生類)聲明新類。 派生類繼承并可以擴充基類中定義的屬性、方法、事件、字段和常量。 以下部分介紹繼承的一些規則,以及可用于更改類繼承或繼承方式的修改器:

繼承修改器

Visual Basic 引入了以下類級語句和修改器來支援繼承:

  • Inherits

    語句 = 指定基類。
  • NotInheritable

    修改器 = 防止程式員将類用作基類。
  • MustInherit

    修改器 = 指定類僅用于基類。 不能直接建立

    MustInherit

    類的執行個體;是以,無法直接建立類的執行個體。它們隻能建立為派生類的基類執行個體。 (其他程式設計語言(如C++和 C#)使用術語抽象類來描述此類

派生類中的重寫屬性和方法

預設情況下,派生類繼承其基類的屬性和方法。 如果繼承的屬性或方法在派生類中的行為不同,則可以重寫它。 也就是說,您可以在派生類中定義方法的新實作。 下列修飾符用于控制如何重寫屬性和方法:

  • Overridable

    • 允許在派生類中重寫類中的屬性或方法。
  • Overrides

    • 重寫基

    Overridable

    類中定義的屬性或方法。
  • NotOverridable

    • 防止在繼承類中重寫屬性或方法。 預設情況下,

    Public

    方法為

    NotOverridable

  • MustOverride

    • 要求派生類重寫屬性或方法。 使用

    MustOverride

    關鍵字時,方法定義僅包含

    Sub

    。 

    Function

    。 

    Property

     不允許任何其他語句,特别是沒有

    End Sub

    End Function

    語句。 

    MustOverride

    方法必須在類中

    MustInherit

    聲明。

MyBase 關鍵字

關鍵字

MyBase

的作用類似于引用類目前執行個體的基類的對象變量。 

MyBase

通常用于通路派生類中重寫或隐藏基類成員。 特别是,

MyBase.New

用于從派生類構造函數顯式調用基類構造函數。

下面的清單描述了對 使用

MyBase

的限制:

  • MyBase

    指直接基類及其繼承成員。 它不能用于通路

    Private

    類中的成員。
  • MyBase

    是關鍵字,而不是真實對象。 

    MyBase

    不能配置設定給變量、傳遞給過程或用于

    Is

    比較。
  • MyBase

    限定的方法不必在直接基類中定義;它可以在間接繼承的基類中定義。 為了使 引用

    MyBase

    具有正确的編譯,某些基類必須包含一個方法,比對調用中顯示的參數的名稱和類型。
  • 不能使用

    MyBase

    調用

    MustOverride

    基類方法。
  • MyBase

    不能用來限定自己。 是以,以下代碼無效:

    MyBase.MyBase.BtnOK_Click()

  • MyBase

    不能在子產品中使用。
  • MyBase

    不能用于通路标記為

    Friend

    基類的基類成員,因為基類位于其他程式集中。

有關詳細資訊和另一個示例,請參閱如何:通路派生類隐藏的變量。

MyClass 關鍵字

關鍵字

MyClass

的作用類似于對象變量,該變量引用最初實作的類的目前執行個體。 

MyClass

類似于

Me

,但每個方法和屬性調用

MyClass

都被視為方法或屬性不是可重寫的。 是以,方法或屬性不受派生類中重寫的影響。

  • MyClass

    是關鍵字,而不是真實對象。 

    MyClass

    不能配置設定給變量、傳遞給過程或用于

    Is

    比較。
  • MyClass

    引用包含類及其繼承成員。
  • MyClass

    可用作成員的

    Shared

    限定符。
  • MyClass

    不能在

    Shared

    方法内使用,但可以在執行個體方法内通路類的共享成員。
  • MyClass

    不能在标準子產品中使用。
  • MyClass

    可用于限定在基類中定義且沒有該類中提供的方法的實作的方法。 這種引用與

    MyBase.

    方法的含義相同。

一個小例子:

Module Module1

    Public Class 人員

        Private pName As String

        Public Property Name As String

            Get

                Return pName

            End Get

            Set(ByVal value As String)

                pName = value

            End Set

        End Property

        Public Sub Work()

            Dim iCount As Integer

            For iCount = 1 To 10

                Console.WriteLine(pName & "Working" & CStr(iCount))

            Next

        End Sub

    End Class

    Public MustInherit Class 售貨員

        Inherits 人員

        Public Corporation As String

        Public City As String

    End Class

    Public Class 百貨售貨員

        Inherits 售貨員

        Public Sub Speak()

            Console.WriteLine("汪汪" & Name)

        End Sub

    End Class

    Sub Main()

        Dim Person As New 人員

        Person.Name = "張三"

        Person.Work()

        Dim SalesMan As New 百貨售貨員

        SalesMan.Name = "李四"

        SalesMan.City = "西雅圖"

        Console.WriteLine(SalesMan.Name)

        Console.WriteLine(SalesMan.City)

        SalesMan.Work()

        SalesMan.Speak()

        Console.Read()

    End Sub

End Module