转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
蛙蛙推荐:面向对象编程基础入门(vb.net版)         ★★★★

蛙蛙推荐:面向对象编程基础入门(vb.net版)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2725 更新时间:2009/4/23 19:01:26
会为命令按钮创建一个空事件处理程序和一个 WithEvents 变量,如以下示例所示:
Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click(ByVal sender As System.Object, _
   ByVal e As System.EventArgs) Handles Button1.Click

End Sub
接口概述
和类一样,接口也定义了一系列属性、方法和事件。但与类不同的是,接口并不提供实现。它们由类来实现,并从类中被定义为单独的实体。

接口表示一种约定,实现接口的类必须严格按其定义来实现接口的每个方面。

有了接口,就可以将功能定义为一些紧密相关成员的小组。可以在不危害现有代码的情况下,开发接口的增强型实现,从而使兼容性问题最小化。也可以在任何时候通过开发附加接口和实现来添加新的功能。

虽然接口实现可以进化,但接口本身一旦被发布就不能再更改。对已发布的接口进行更改会破坏现有的代码。若把接口视为约定,很明显约定双方都各有其承担的义务。接口的发布者同意不再更改该接口,接口的实现者则同意严格按设计来实现接口。

Visual Basic .NET 以前的 Visual Basic 版本可以使用接口,但不能直接创建它们。Visual Basic .NET 允许用 Interface 语句定义真正的接口,并允许用改进版本的 Implements 关键字来实现这些接口。
继承的基础知识
Inherits 语句用于基于现有类(称为“基类”)来声明新类(称为“派生类”)。派生类继承并可扩展基类中定义的属性、方法、事件、字段和常数。下面一节描述一些继承规则,以及一些可用来更改类继承或被继承方式的修饰符:

默认情况下,所有类都是可继承的,除非用 NotInheritable 关键字标记。类可以从项目中的其他类继承,也可以从项目引用的其他程序集中的类继承。
与允许多重继承的语言不同,Visual Basic .NET 只允许类中有单一继承,即派生类只能有一个基类。虽然类中不允许有多重继承,但类“可以”实现多个接口,这样可以有效地实现同一目的。
若要防止公开基类中的受限项,派生类的访问类型必须与其基类一样或比其基类所受限制更多。例如,Public 类无法继承 Friend 或 Private 类,而 Friend 类无法继承 Private 类。
继承修饰符
Visual Basic .NET 引入了下列类级别语句和修饰符以支持继承:

Inherits 语句 — 指定基类。
NotInheritable 修饰符 — 防止程序员将该类用作基类。
MustInherit 修饰符 — 指定该类仅适于用作基类。无法直接创建 MustInherit 类的实例,只能将它们创建为派生类的基类实例。(其他编程语言,如 C++ 和 C#,使用术语“抽象类”来描述这样的类。)
重写派生类中的属性和方法
默认情况下,派生类从其基类继承方法。如果继承的属性或方法需要在派生类中有不同的行为,则可以“重写”它,即,可以在派生类中定义该方法的新实现。下列修饰符用于控制如何重写属性和方法:

Overridable — 允许某个类中的属性或方法在派生类中被重写。
Overrides — 重写基类中定义的 Overridable 属性或方法。
NotOverridable — 防止某个属性或方法在继承类中被重写。默认情况下,Public 方法为 NotOverridable。
MustOverride — 要求派生类重写属性或方法。当使用 MustOverride 关键字时,方法定义仅由 Sub、Function 或 Property 语句组成。不允许有其他语句,尤其是不能有 End Sub 或 End Function 语句。必须在 MustInherit 类中声明 MustOverride 方法。
有关重写方法的更多信息,请参见重写属性和方法

MyBase 关键字
当重写派生类中的方法时,可以使用 MyBase 关键字调用基类中的方法。例如,假设您正在设计一个重写从基类继承的方法的派生类。重写的方法可以调用基类中的该方法,并修改返回值,如下面的代码片段中所示:

Class DerivedClass
   Inherits BaseClass
   Public Overrides Function CalculateShipping(ByVal Dist As Double, _
                                    ByVal Rate As Double) As Double
      '''' Call the method in the base class and modify the return value.
      Return MyBase.CalculateShipping(Dist, Rate) * 2
   End Function
End Class
下面的列表描述对使用 MyBase 的限制:

MyBase 引用直接基类及其继承成员。它无法用于访问类中的 Private 成员。
MyBase 是关键字,不是实际对象。MyBase 无法分配给变量,无法传递给过程,也无法用在 Is 比较中。
MyBase 限定的方法不需要在直接基类中定义,它可以在间接继承的基类中定义。为了正确编译 MyBase 限定的引用,一些基类必须包含与调用中出现的参数名称和类型匹配的方法。
不能使用 MyBase 来调用 MustOverride 基类方法。
MyBase 无法用于限定自身。因此,下面的代码是非法的:
MyBase.MyBase.BtnOK_Click()   '''' Syntax error.
MyBase 无法用在模块中。
如果基类在不同的程序集中,则不能使用 MyBase 来访问标记为 Friend 的基类成员。
MyClass 关键字
MyClass 关键字使您得以调用在类中实现的 Overridable 方法,并确保调用此类中该方法的实现,而不是调用派生类中重写的方法。

MyClass 是关键字,不是实际对象。MyClass 无法分配给变量,也无法传递给过程,而且也无法用在 Is 比较中。
MyClass 引用包含类及其继承成员。
MyClass 可用作 Shared 成员的修饰符。
MyClass 无法用在标准模块中。
MyClass 可用于限定这样的方法,该方法在基类中定义但没有在该类中提供该方法的实现。这种引用的意义与 MyBase.Method 相同。
基于继承的多态性
大部分面向对象的编程系统都通过继承提供多态性。基于继承的多态性涉及在基类中定义方法并在派生类中使用新实现重写它们。

例如,可以定义一个类 BaseTax,该类提供计算某个州/省的销售税的基准功能。从 BaseTax 派生的类,如 CountyTax 或 CityTax,如果适合的话可实现如 CalculateTax 这样的方法。

多态性来自这样一个事实:可以调用属于从 BaseTax 派生的任何类的某个对象的 CalculateTax 方法,而不必知道该对象属于哪个类。

下面示例中的 TestPoly 过程演示基于继承的多态性:

Const StateRate As Double = 0.053 '''' %5.3 State tax
Const CityRate As Double = 0.028  '''' %2.8 City tax
Public Class BaseTax
   Overridable Function CalculateTax(ByVal Amount As Double) As Double
      Return Amount * StateRate '''' Calculate state tax.
   End Function
End Class

Public Class CityTax
   '''' This method calls a method in the base class
   '''' and modifies the returned value.
   Inherits BaseTax
   Private BaseAmount As Double
   Overrides Function CalculateTax(ByVal Amount As Double) As Double
      '''' Some cities apply a tax to the total cost of purchases,
      '''' including other taxes.
      BaseAmount = MyBase.CalculateTax(Amount)
      Return CityRate * (BaseAmount + Amount) + BaseAmount
   End Function
End Class

Sub TestPoly()
    Dim Item1 As New BaseTax()
    Dim Item2 As New CityTax()
    ShowTax(Item1, 22.74) '''' $22.74 normal purchase.
    ShowTax(Item2, 22.74) '''' $22.74 city purchase.
 End Sub

Sub ShowTax(ByVal Item As BaseTax, ByVal SaleAmount As Double)
   '''' Item is declared as BaseTax, but you can
   '''' pass an item of type CityTax instead.
   Dim TaxAmount As Double
   TaxAmount = Item.CalculateTax(SaleAmount)
      MsgBox("The tax is: " & Format(TaxAmount, "C"))
End Sub
在此示例中,ShowTax 过程接受 BaseTax 类型的名为 Item 的参数,但还可以传递从形状类派生的任何类,如 CityTax。这种设计的优点在于可添加从 BaseTax 类派生的新类,而不用更改 ShowTax 过程中的客户端代码。

 

上一页  [1] [2] [3] 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台