打印本文 打印本文 关闭窗口 关闭窗口
VB.Net中文教程(5)程序多重定义
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3637  更新时间:2009/4/23 19:01:09  文章录入:mintao  责任编辑:mintao
bsp;           d = 1
        End If
        CompareWithInteger = d
    End Function
    Public Function CompareWithRectangle(ByVal r As Rectangle) As Integer
        Dim d As Integer
        d = Area() - r.Area()
        If d <> 0 Then
            d = 1
        End If
        CompareWithRectangle = d
    End Function
    Public Function CompareTwoRectangle( ByVal x As Rectangle, ByVal
                                      y As Rectangle) As Integer
        Dim d As Integer
        d = x.Area() - y.Area()
        If d <> 0 Then
            d = 1
        End If
        CompareTwoRectangle = d
    End Function
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 r1 As New Rectangle(10, 50)
        Dim r2 As New Rectangle(20, 25)
        If r1.CompareWithInteger(400) = 0 Then
            MessageBox.Show("ggg EQUAL")
        Else
            MessageBox.Show("NOT EQUAL")
        End If
        If r1.CompareWithRectangle(r2) = 0 Then
            MessageBox.Show("EQUAL")
        Else
            MessageBox.Show("NOT EQUAL")
        End If
        If r1.CompareTwoRectangle(r1, r2) = 0 Then
            MessageBox.Show("EQUAL")
        Else
            MessageBox.Show("NOT EQUAL")
        End If
    End Sub
End Class

此程序输出﹕
NOT EQUAL
EQUAL
EQUAL

由于各程序名称不相同,您就得记忆各程序之名字﹐徒增记忆负担而且易于犯错﹐并不合乎人们生活习惯。因之﹐VB的多重定义观念﹐能增加程序之弹性及亲切感。
    程序多重定义情形并不限于单一类别之内,也可以发生于父子类别之间。例如:

''''ex06.bas
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms
''''------------------------------------------------------------------------------------------
Public Class Person
    Private name As String
    Private age As Integer
    Public Sub New()
    End Sub
    Public Sub SetValue(ByVal na As String, ByVal a As Integer)
        name = na
        age = a
    End Sub
    Public Function birthDay() As Integer
        birthDay = 2001 - age
    End Function
    Public Sub Display()
        Messagebox.Show("Name: " + name + "   Age: " + str(age))
    End Sub
End Class

Public Class Teacher
    Inherits Person
   
    Private salary As Decimal
    Public Overloads Sub SetValue( ByVal na As String, ByVal a As Integer, ByVal
                               sa As Decimal)
        SetValue(na, a)
        salary = sa
    End Sub
    Public Sub pr()
        MyBase.Display()
        Messagebox.Show("Salary: " + str(salary))
    End Sub
End Class

Public Class Student
    Inherits Person
   
    Private student_number As Integer
    Public Overloads Sub SetValue( ByVal na As String, ByVal a As Integer, ByVal
                               no As Integer)
        SetValue(na, a)
        student_number = no
    End Sub
    Public Sub pr()
        MyBase.Display()
        Messagebox.Show("StudNo: " + str(student_number))
    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 x As New Person()
        x.SetValue("Alvin", 32)
        Dim y As New Student()
        y.SetValue("Tom", 36, 11138)
        x.Display()
        y.pr()
    End Sub
End Class

Teacher类别从Person继承了SetValue() ──
        SetValue(ByVal na As String, ByVal a As Integer)

自己又重复定义一个新的SetValue()程序──
        SetValue(ByVal na As String, ByVal a As Integer, ByVal no As Integer)

共有两个SetValue()可用。指令x.SetValue("Alvin", 32)呼叫第1个SetValue();指令y.SetValue("Tom", 36, 11138)呼叫第1个SetValue()。
    兹在扩充一个子类别如下:
   
''''ex07.bas
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms
''''------------------------------------------------------------------------------------------
Public Class Person
    Private name As String
    Private age As Integer
    Public Sub New()
    End Sub
    Public Sub SetValue(ByVal na As String, ByVal a As Integer)
        name = na
        age = a
    End Sub
    Public Function birthDay() As Integer
        birthDay = 2001 - age

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

打印本文 打印本文 关闭窗口 关闭窗口