.NET中的MustOverride和MustInherit
来源:互联网 发布:手机淘宝怎样交电费 编辑:程序博客网 时间:2024/06/03 12:41
MustOverride:
指定在这个类中没有实现的属性或过程,且必须在派生类中重写属性或过程后才可以使用。
规则
不完整的声明。 在指定 MustOverride 时,请勿为属性或过程提供任意附加行的代码,即使End Function、End Property 或End Sub 语句也不提供。
组合修饰符。 不能在同一声明中将 MustOverride 与NotOverridable、Overridable 或Shared 同时指定。
隐藏与重写。隐藏和重写都重新定义继承的元素,但这两种方法之间有很大差异。有关更多信息,请参见 Visual Basic 中的隐藏。
替换术语。除了在重写中以外都无法使用的元素有时称为“纯虚拟”元素。
指定某个类只能用作基类,您不能直接从该类创建对象。
MustInherit 类的另一个用途是限定一个变量仅用于一组相关类。您可以先定义一个基类,然后从此基类派生出所有这些相关的类。此基类无需提供所有派生类所共同拥有的任何功能,但它可以作为一个筛选器,将值分配给变量。如果您的使用代码将一个变量声明为基类,Visual Basic 将允许您仅将这些派生类中的某个类的对象分配给该变量。
.NET Framework 定义多个 MustInherit 类,包括Array、Enum 和ValueType。ValueType 就是限制变量的基类的一个示例。所有值类型均从ValueType 派生。如果将一个变量声明为ValueType,则可以仅将值类型分配给该变量。
规则
声明上下文。只能在 Class 语句中使用MustInherit。
组合修饰符。不能在同一声明中同时指定 MustInherit 和NotInheritable。
Public MustInherit Class shape Public acrossLine As Double Public MustOverride Function area() As DoubleEnd ClassPublic Class circle : Inherits shape Public Overrides Function area() As Double Return Math.PI * acrossLine End FunctionEnd ClassPublic Class square : Inherits shape Public Overrides Function area() As Double Return acrossLine * acrossLine End FunctionEnd ClassPublic Class consumeShapes Public Sub makeShapes() Dim shape1, shape2 As shape shape1 = New circle shape2 = New square End SubEnd Class
您可以将 shape1 和 shape2 声明为 shape 类型。但是,您不能从 shape 创建对象,因为它缺少 area 函数的功能并且被标记为 MustInherit。
由于变量 shape1 和 shape2 被声明为 shape 类型,因此它们被限定为仅使用派生类 circle 和 square 中的对象。Visual Basic 不允许您将任何其他对象分配给这些变量,这样您就可以获得很高的类型安全级别。
- .NET中的MustOverride和MustInherit
- .NET框架和VS.NET中的SOAP
- .NET 中的断言和跟踪
- .NET 中的断言和跟踪
- .net中的delegate和event
- .net中的委托和事件
- .NET中的打印和预览
- .Net中的XML和SOAP
- .NET中的委托和事件
- .net中的Queue和Stack
- Sqlserver 和.net中的事务
- .net中的DAL和BLL
- .net中的Queue和Stack
- ASP.NET中的事务处理和异常处理
- ASP.NET中的事务处理和异常处理
- ADO.NET中的视图和过滤器
- ADO.NET中的视图和过滤器
- ASP.NET中的事务处理和异常处理
- java 静态学习
- eclipse 更改SVN账户名和密码
- javascript中对象如何实现值传递
- php 时间运算。
- 彻底清除浏览器js和css缓存
- .NET中的MustOverride和MustInherit
- 函数参数为指针类型(指针的指针&指针的引用)
- 使用JavaScript设置CSS3属性
- 第九周-2
- spring JDBC 的web 应用
- SQL触发器实例讲解
- 【分享】淘宝小米手机产品评论
- 设计模式(c++)笔记之十(Flyweight模式)
- 科研人员打造出可储存数据一百万年的磁盘驱动器