您的位置:首页 > 其它

.NET中的MustOverride和MustInherit

2013-10-23 13:53 183 查看
MustOverride:

指定在这个类中没有实现的属性或过程,且必须在派生类中重写属性或过程后才可以使用。


 备注
只能在属性或过程声明语句中使用
MustOverride。指定 MustOverride 的属性或过程必须是类的成员,并且该类必须标记为
MustInherit

规则

不完整的声明。 在指定 MustOverride 时,请勿为属性或过程提供任意附加行的代码,即使
End Function、End Property 或
End Sub 语句也不提供。

组合修饰符。 不能在同一声明中将 MustOverride 与
NotOverridable、Overridable 或
Shared 同时指定。

隐藏与重写。隐藏和重写都重新定义继承的元素,但这两种方法之间有很大差异。有关更多信息,请参见
Visual Basic 中的隐藏

替换术语。除了在重写中以外都无法使用的元素有时称为“纯虚拟”元素。

指定某个类只能用作基类,您不能直接从该类创建对象。

备注
基类(也称为“抽象类”)的用途就是定义从此基类派生的所有类所共同拥有的功能,这样派生类将不必重新定义这些公共元素。某些情况下,此公共功能不够完整,无法生成一个可用的对象,因此每个派生类都需要单独定义所缺少的功能。此时,您需要让使用代码仅从派生类创建对象。您可以对基类使用
MustInherit 来强制执行此操作。
MustInherit 类的另一个用途是限定一个变量仅用于一组相关类。您可以先定义一个基类,然后从此基类派生出所有这些相关的类。此基类无需提供所有派生类所共同拥有的任何功能,但它可以作为一个筛选器,将值分配给变量。如果您的使用代码将一个变量声明为基类,Visual Basic 将允许您仅将这些派生类中的某个类的对象分配给该变量。

.NET Framework 定义多个 MustInherit 类,包括
ArrayEnum
ValueTypeValueType 就是限制变量的基类的一个示例。所有值类型均从
ValueType 派生。如果将一个变量声明为
ValueType,则可以仅将值类型分配给该变量。

规则

声明上下文。只能在 Class 语句中使用
MustInherit。

组合修饰符。不能在同一声明中同时指定 MustInherit 和
NotInheritable。

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。

由于变量 shape1 和 shape2 被声明为
shape 类型,因此它们被限定为仅使用派生类 circle 和
square 中的对象。Visual Basic 不允许您将任何其他对象分配给这些变量,这样您就可以获得很高的类型安全级别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐