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