VB.NET抽象类怎么用
这篇文章给大家分享的是有关VB.NET抽象类怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创建抽象类
对抽象类的定义很简单,只要在定义域里加入关键字MustInherit,如:
Public MustInherit
class MyAbstract class
...
End class
除开要包含关键字之外, 抽象类的定义与非抽象类的定义没什么两样. 抽象类包含了从其它类承继而来的属性及方法等等.但是,在抽象类中定义的类成员(属性及方法)是如何与衍生类中的定义元素产生联系的呢?在此并没有复杂的规则,但你作出的决定是与你所拥有的类的性能及它将衍生出来的 类所密切相关。
你有三个选择。
VB.NET抽象类中已有的功能比如属性、方法等在衍生类中可以被重载。实现这一功能只要在成员定义中输入Overridable关键字。如:
Public Overridable
Sub Move(NewX As Integer,
NewY As Integer)
...
End Sub
为重载abstract base 类中的成员,衍生类在执行语句中须使用Overrides关键字段。如:
Public Overrides Move
(NewX As Integer,
NewY As Integer)
...
End Sub
VB.NET抽象类中已有的功能不能在衍生类中重载。即是,衍生类必须使用抽象类定义的成员。如果你在抽象类中不使用任何特殊字段来定义任一成员将会产生该缺省。以下代码定义了抽象类中的Xpos属性。衍生类必须使用该属性,因为该属性不能被重载。如:
Public Property XPos()
As Integer
...
End Property
利用MustOverride关键字来定义抽象类成员,该成员可以在衍生类中重载。以下举例说明了衍生类必须执行名为GetObjectAt()的方法。
Public MustOverride Function
GetObjectAt(X As Integer,
Y As Integer) As Object
请注意MustOverride成员不需要End Sub 或End Function语句。使用MustOverride最方便的地方在于它不仅规定了成员的名称同样也规定了成员的符号。先前的例子要求任一衍生类都需定义名称为GetObjectAt()的方法,因此会产生两种类型的整型变量以及返回一个类型对象。该方法是在衍生类中的执行是完全根据程序员的指令要求。通过MustOverride字段说明的方法一些时候也被称为abstract 成员。
VB.NET抽象类与接口
如果你熟悉接口的相关知识,你会认为抽象类与它是如此相似。事实上只是一部份类似。定义仅含有抽象成员的抽象类基本上是与接口的定义相同的,因为你已经规定衍生类必须执行某个具有专用符号的成员。另外,抽象类具有其它的功能,是接口无法实现的,--尤其是在定义非抽象类成员的基本功能薄?BR>
当你在认为抽象类或是接口都能如常运作时,请谨记如下几点:
除了从一个类(抽象或非抽象) 派生出来,一个衍生类可以执行多个接口。
从抽象类派生出来的子类同样能够执行一个或多个接口,这要依你的项目而定,你可以只用一个抽象类或多个接口,或者抽象类和接口混合使用。VB和.NET在这项工作上提供了非常大的灵活性.因此你可以通过不同的方式来达到你想要的结果.底线是一些项目必须是通过抽象类来实现.VB.NET抽象类也许会被认为是一种非常专业的编程方法.它可帮程序员减少工作量并且可以生成更简便功能更强大的程序.
实际操作中使用抽象类
设想一下你正在为一家大公司开发一个新的员工数据库.你的工作就是监督类的执行,使雇员的基本情况与管理部门的要求相吻合,同样, 在区分公司分支机构的要求时也提供更大的便利.
基本要求如下:
抽象类里有姓名,雇用时间等属性,这些属性不会被重载.
因为大多数雇员来自美国,因此在VB.NET抽象类里执行退休ID,以运行社会保障号码.国外分公司将会利用不同的方式来鉴别雇员的退休ID,因此该属性会在衍生类里重载,以便单个分支机构分别执行.
名称为补偿金的方法不会引起争议,然后会返回一个含有雇员补偿金细节的类型对象.因为不同分公司都规定不同的补偿金,薪金,佣金,红利等,因此灵活的执行这些对象是很有必要的,由此会产生一个抽象方法.
由此而产生的抽象类的代码,称为EmployeeBase,会在***栏里显示。
位于法国的分公司的程序员用EmployeeBase类作为EmployeeFrance类的基类,与当地雇员记录软件合作使用。因此,衍生类需要承继名称及雇用日期等字段。更多的是,在EmployeeBase 类中的RetirementID成份适合运用在法国,因此,新类不会重载该成份。程序员做的所有这些工作是为了执行abstract Compensation member 的重载。
但是在英国, RetirementID 属性不适用于该地,因此衍生类将会重载该成员,同样的也会重载Compensation 成员。
感谢各位的阅读!关于“VB.NET抽象类怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341