繁体中文
设为首页
加入收藏
当前位置:在线教程首页 >> 程序设计 >> .Net专区 >> VB.net语言 >> VB.Net中文教程(3)程序多重定义(1)

VB.Net中文教程(3)程序多重定义(1)

2005-10-10 05:48:00  作者:未知  来源:教程网  浏览次数:161  文字大小:【】【】【

VB.Net中文教程(3)程序多重定义(1)

 

   「程序多重定义」(Function Overloading)又称为「程序重复定义」。它让对象更具弹性﹐能处理多样化之讯息。这观念源于日常生活经验。例如﹐我们常说﹕

                     绣球

                     老鼠

                    

 

猫玩绣球与玩老鼠之玩法不尽相同。但何以使用同一动词──「玩」呢﹖也许人们认为其目的是一致的﹕猫获得快乐。上述的「猫」为类别﹐而某只猫是对象。例如﹕加菲猫是对象﹐它可接受讯息──

 

                 

 

   其中﹐「玩」代表着动作和过程﹐而绣球、老鼠及鱼则是「玩」之对象。回想﹐在程序中﹐「程序」代表一项动作及过程﹐而「自变量值」则为程序之处理对象。因之﹐上图可表示为──

                   

   OOP 程序设计之理想为﹕让程序之写法与人们日常生活经验吻合﹐于是设计个Play()程序﹐让它能接受不同型态之资料做为处理对象。上述Play()已具「多重定义」﹐其特点是──

       1.  程序名称相同﹐例如﹕Play()。

       2.  自变量不同﹐例如﹕老鼠和鱼。

 

因猫玩绣球和玩老鼠的方法略有不同﹐例如老鼠是活的而绣球是死的﹐其玩的过程亦不尽相同。为了表示动作与过程之不同﹐Play()程序内之指令也有所不同。例如﹕

 

          

 

VB程序时﹐其格式必须是──

 

             Class Cat

                Public Overloads Sub Play(绣球)

                   指令

                   .......

                End Sub

                Public Overloads Sub Play(老鼠)

                   指令

                   .......

                End Sub

                Public Overloads Sub Play(鱼)

                   指令

                   .......

                End Sub

             End Class

 

这就是「程序成员多重定义」了。Cat 类别含有三种Play()之定义﹐其自变量不同而且内部指令亦不相同。于是Play()程序能接受不同之自变量﹐并执行不同之指令﹐使得Play()具弹性了。请看个程序──

 

"ex01.bas

Imports System.ComponentModel

Imports System.Drawing

Imports System.WinForms

"-------------------------------------------------------

Class Example

   Public Overloads Sub Display()

       MessageBox.Show("****")

   End Sub

   Public Overloads Sub Display(ByVal r As Integer)

       MessageBox.Show(str(r))

   End Sub

   Public Overloads Sub Display(ByVal f As Double)

       MessageBox.Show(str(f + 2))

   End Sub

   Public Overloads Sub Display(ByVal s As String)

       MessageBox.Show(s)

   End Sub

End Class

"--------------------------------------------------------

Public Class Form1

   Inherits System.WinForms.Form

  

   Public Sub New()

       MyBase.New()

       Form1 = Me

       "This call is required by the Win Form Designer.

       InitializeComponent()

       "TODO: Add any initialization after the InitializeComponent() call

   End Sub

   "Form overrides dispose to clean up the component list.

   Public Overrides Sub Dispose()

       MyBase.Dispose()

       components.Dispose()

   End Sub

#Region " Windows Form Designer generated code "

   ........

#End Region

   Protected Sub Form1_Click( ByVal sender As Object, ByVal

                           e As System.EventArgs)

       Dim a As New Example()

       a.Display()

       a.Display("Taiwan")

       a.Display(80)

       a.Display(100.5)

   End Sub

End Class

 

此程序输出如下﹕   ****

Taiwan

80

102.5

 

   这Example类别比较特殊﹐没有资料成员﹔但含有一个程序成员叫Display() 。而Display()有 4个不同之版本(定义)﹐可任君(计算机)挑选。计算机藉比对自变量来挑选「最相配」之Display()程序。

    例如﹕计算机执行到指令──

                     a.Display("Taiwan")

 

由于自变量── "Taiwan"是字符串﹐其型态应配上String﹐所以计算机挑选并且执行第 4个程序──  Display( ByVal s As String ) 。同理﹐当计算机执行到指令──

                     a.Display(100.5)

 

由于自变量──100.5之型态为Double﹐所以计算机选上并执行第 3个Display()程序── Display(ByVal f As Double )。同一程序名称但有数个不同之定义﹐各有不同之自变量及内部指令﹐此种现象就是「程序的多重定义」。

 

        

 

请再看个例子──

 

"ex02.bas

Imports System.ComponentModel

Imports System.Drawing

Imports System.WinForms

"--------------------------------------------------

Class Sum

   Private s As Integer

   Public Overloads Sub Add()

       s = 3 + 5

   End Sub

   Public Overloads Sub Add(ByVal x As Integer)

       s = x + 5

   End Sub

   Public Overloads Sub Add(ByVal x As Integer, ByVal y As Integer)

       s = x + y

   End Sub

   Public Sub Show()

       MessageBox.Show("Sum = " + str(s))

   End Sub

End Class

"---------------------------------------------------

Public Class Form1

   Inherits System.WinForms.Form

  

   Public Sub New()

 

 

此文章不能满足您的需求?那就就Google一下吧:)
Google
 

责任编辑:Lily


相关文章
SA空口令破解和保护
怎样使MySQL更安全?
Mysql数据库的安全配置、实用技巧
如何安全的配置和应用MySQL数据库?
Oracle数据库安全策略分析
SQL Server 2000的安全配置
使一个新的MySQL安装更安全
教您如何安全的应用MySQL
MySQL数据库安全配置
MySQL安全性指南(1)
MySQL安全性指南(2)
 

最新文章

更多

· 类别与封装性(1)
· 类别与封装性(2)
· 类别与封装性(3)
· 类别与封装性(4)
· 类别与封装性(5)
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(3)程序多...

推荐文章

更多

· 类别与封装性(1)
· 类别与封装性(2)
· 类别与封装性(3)
· 类别与封装性(4)
· 类别与封装性(5)
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(2) 继承...
· VB.Net中文教程(3)程序多...

热点文章

更多