MustInherit (Visual Basic)
指定類別只可用做為基底類別,且您無法直接從它建立物件。
備註
基底類別 (亦稱為抽象類別) 旨在於定義衍生自其所有類別的通用功能。 這樣使得衍生類別不必重新定義通用元素。 在某些情況下,這項通用功能不夠完整,無法建立可用物件,而每個衍生類別都會定義遺漏的功能。 在這種情況下,您希望取用的程式碼僅從衍生類別建立物件。 您可以在基底類別上使用 MustInherit
強制執行此動作。
MustInherit
類別的另一種用途是將變數限制為一組相關類別。 您可以定義基底類別,並從中衍生所有相關類別。 基底類別不需要提供所有衍生類別通用的任何功能,但可作為將值指派給變數的篩選準則。 如果您的取用程式碼將變數宣告為基底類別,Visual Basic 可讓您僅將其中一個衍生類別的物件指派給該變數。
.NET Framework 會定義數個 MustInherit
類別,包括 Array、Enum 和 ValueType。 ValueType 是限制變數的基底類別範例。 所有實值型別都衍生自 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 不允許您將任何其他物件指派給這些變數,這為您提供了更高的型別安全層級。
使用方式
MustInherit
修飾詞可用於以下內容: