打印本文 打印本文 关闭窗口 关闭窗口
VB.Net中文教程(6) 母子对象关系
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3251  更新时间:2009/4/23 19:01:09  文章录入:mintao  责任编辑:mintao
nbsp;    MessageBox.Show(r.GetID())
    End Sub
End Class

此程序输出﹕
                 RoomID: VIP888

    一般使用委托(Delegation)来代替继承时,常用的手法。然而上述ex08.bas程序的MyRoom类别里面用到了Room名称,如果您不希望如此,可定义一个IRoom接口,供MyRoom类别使用,如下程序:

''''ex09.bas
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms
''''----------------------------------------------------
Interface IMyRoom
    Function yourID() As String
End Interface

Interface IRoom
    Function GetID() As String
    Sub Connect(ByVal m As IMyRoom)
End Interface

Class Room
    Implements IRoom
    Private motherObject As IMyRoom
   
    Public Function GetID() As String Implements IRoom.GetID
        GetID = motherObject.yourID() + "  ***"
    End Function
    Public Sub Connect(ByVal m As IMyRoom) Implements IRoom.Connect
        motherObject = m
    End Sub
End Class

Class MyRoom
    Implements IMyRoom
    Private base As IRoom
   
    Public Sub Connect(ByVal r As IRoom)
        base = r
        r.Connect(Me)
    End Sub
    Public Function yourID() As String Implements IMyRoom.yourID
        yourID = "Dog888"
    End Function
    Public Function GetID() As String
        GetID = base.GetID()
    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 my As New MyRoom()
        Dim base As New Room()
        my.Connect(base)
        MessageBox.Show(my.GetID())
    End Sub
End Class

此程序输出﹕
                 RoomID: VIP888

    Room类别里面没用到MyRoom名称,而且MyRoom类别里没有用到Room名,因此两个类别可独立设计。这是分布式组件软件,如MTS(Microsoft transaction server)等系统里的常用手法。n

 

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

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