手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

VB.Net中文教程(6) 母子对象关系

来源:互联网 作者:西部数码 时间:2008-04-10
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

End Sub
#Region " Windows Form Designer generated code "
.......
#End Region
Protected Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim r As New MyRoom()
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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!