MustInherit (Visual Basic)

指定只能將類別當做基底類別,而且您無法從中直接建立物件。

備註

「基底類別」(也稱為「抽象類別」(Abstract Class)) 的用途是定義功能,通用於從其衍生的所有功能。 這會根據必須重新定義通用項目來儲存衍生類別。 在某些情況下,這個通用功能的完成度並不足以製作可使用的物件,且每一個衍生類別都會定義遺漏的功能。 在這種情況下,您可能想要使用程式碼,只從衍生類別建立物件。 您可以在基底類別上使用 MustInherit 強制執行這個動作。

MustInherit 類別的另一個用途是,將變數限制為一組相關的類別。 您可以定義基底類別,再從中衍生所有相關類別。 基底類別不需要提供通用於所有衍生類別的任何功能,但它可以當做篩選條件來指派變數值。 如果使用的程式碼會將變數宣告為基底類別,Visual Basic 就能讓您只將其中一個衍生類別的物件,指派給該變數。

.NET Framework 定義了數個 MustInherit 類別,其中有 ArrayEnumValueTypeValueType 是限制變數的基底類別範例。 所有實值型別 (Value Type) 都衍生自 ValueType。 若將變數宣告為 ValueType,則可以只將實值型別指派給該變數。

規則

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

  • **組合的修飾詞:**您無法在同一個宣告中同時指定 MustInherit 和 NotInheritable。

範例

下列範例會同時說明強制繼承和強制覆寫。 基底類別 shape 會定義變數 acrossLine。 類別 circle 和 square 衍生自 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

您可以將 shape1 和 shape2 宣告成型別 shape。 然而,您無法從 shape 建立物件,因為它缺少函式 area 的功能,並已標記 MustInherit。

由於已將其宣告為 shape,因此會將變數 shape1 和 shape2 限制為來自衍生類別 circle 和 square 的物件。 Visual Basic 不允許您將任何其他物件指派給這些變數,因此能提供您高度的型別安全 (Type Safety)。

使用方式

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

Class 陳述式

請參閱

參考

Inherits 陳述式

NotInheritable (Visual Basic)

概念

繼承基本概念 (Visual Basic)

其他資源

關鍵字 (Visual Basic)