Inherits Statement
導緻目前類或接口繼承其他類或接口集的屬性、變量、屬性、過程和事件。
MustInherit
指定類隻能用作基類,并且不能直接從其建立對象。
NotInheritable
指定類不能用作基類。
繼承的基礎知識 (Visual Basic)
該
Inherits
語句用于根據稱為基類的新類(稱為派生類)聲明新類。 派生類繼承并可以擴充基類中定義的屬性、方法、事件、字段和常量。 以下部分介紹繼承的一些規則,以及可用于更改類繼承或繼承方式的修改器:
繼承修改器
Visual Basic 引入了以下類級語句和修改器來支援繼承:
-
語句 = 指定基類。Inherits
-
修改器 = 防止程式員将類用作基類。NotInheritable
-
修改器 = 指定類僅用于基類。 不能直接建立MustInherit
類的執行個體;是以,無法直接建立類的執行個體。它們隻能建立為派生類的基類執行個體。 (其他程式設計語言(如C++和 C#)使用術語抽象類來描述此類MustInherit
派生類中的重寫屬性和方法
預設情況下,派生類繼承其基類的屬性和方法。 如果繼承的屬性或方法在派生類中的行為不同,則可以重寫它。 也就是說,您可以在派生類中定義方法的新實作。 下列修飾符用于控制如何重寫屬性和方法:
-
• 允許在派生類中重寫類中的屬性或方法。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