MustInherit (Visual Basic)

指定類別只可用做為基底類別,且您無法直接從它建立物件。

備註

基底類別 (亦稱為抽象類別) 旨在於定義衍生自其所有類別的通用功能。 這樣使得衍生類別不必重新定義通用元素。 在某些情況下,這項通用功能不夠完整,無法建立可用物件,而每個衍生類別都會定義遺漏的功能。 在這種情況下,您希望取用的程式碼僅從衍生類別建立物件。 您可以在基底類別上使用 MustInherit 強制執行此動作。

MustInherit 類別的另一種用途是將變數限制為一組相關類別。 您可以定義基底類別,並從中衍生所有相關類別。 基底類別不需要提供所有衍生類別通用的任何功能,但可作為將值指派給變數的篩選準則。 如果您的取用程式碼將變數宣告為基底類別,Visual Basic 可讓您僅將其中一個衍生類別的物件指派給該變數。

.NET Framework 會定義數個 MustInherit 類別,包括 ArrayEnumValueTypeValueType 是限制變數的基底類別範例。 所有實值型別都衍生自 ValueType。 如果您將變數宣告為 ValueType,則只能將實值型別指派給該變數。

規則

  • 宣告內容。 您只能在 Class 陳述式中使用 MustInherit

  • 合併的修飾元。 您不能在相同的宣告中同時指定 MustInheritNotInheritable

範例

下列範例會說明強制繼承和強制覆寫。 shape 基底類別會定義 acrossLine 變數。 circlesquare 類別衍生自 shape。 它們會繼承 acrossLine 的定義,但必須定義 area 函式,因為每種圖形的計算都不盡相同。

Public MustInherit Class shape
    Public acrossLine As Double
    Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
    Public Overrides Function area() As Double
        Return Math.PI * acrossLine
    End Function
End Class
Public Class square : Inherits shape
    Public Overrides Function area() As Double
        Return acrossLine * acrossLine
    End Function
End Class
Public Class consumeShapes
    Public Sub makeShapes()
        Dim shape1, shape2 As shape
        shape1 = New circle
        shape2 = New square
    End Sub
End Class

您可以將 shape1shape2 宣告為 shape 類型。 不過,您無法從 shape 建立物件,因為它缺少 area 函式的功能並且標示為 MustInherit

由於它們宣告為 shapeshape1shape2 變數會限制為來自 circlesquare 衍生類別中的物件。 Visual Basic 不允許您將任何其他物件指派給這些變數,這為您提供了更高的型別安全層級。

使用方式

MustInherit 修飾詞可用於以下內容:

Class 陳述式

另請參閱