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] |