如何:将实现代码转换为新的继承形式

更新:2007 年 11 月

Visual Basic 6.0 使用 Implements 语句进行接口继承。较新版本的 Visual Basic 提供两种继承:一种使用 Implements 语句,另一种使用 Inherits 语句。本主题演示如何使用这两个选项转换代码。

本页以下面的 Visual Basic 6.0 代码为例:

' Account class.
Private mvarBalance As Currency
Private mvarOwner As String

Public Property Let Owner(ByVal vData As String)
    mvarOwner = vData
End Property

Public Property Get Owner() As String
    Owner = mvarOwner
End Property

Public Function Deposit(ByVal amount As Currency) As Currency
End Function

' Savings class.
Private mvarBalance As Currency
Private mvarOwner As String 'local copy

Public Property Let Owner(ByVal vData As String)
    mvarOwner = vData
End Property

Public Property Get Owner() As String
    Owner = mvarOwner
End Property

Public Function Deposit(ByVal amount As Currency) As Currency
End Function

使用公共接口进行转换

  1. 运行“升级向导”。

    说明:

    “升级向导”是一个用于将 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 的工具。在 Visual Basic 2008 中打开一个 Visual Basic 6.0 项目时,该向导会自动启动。有关更多信息,请参见 如何:用 Visual Basic 升级向导升级项目

    向导将 Account 类转换为接口 (_Account),然后创建两个实现该接口的类(Account 和 Savings)。

    Interface _Account
        Property Owner() As String
        Function Deposit(ByVal amount As Decimal) As Decimal
    End Interface
    Friend Class Account
        Implements _Account
        Private mvarBalance As Decimal
        Private mvarOwner As String
    
        Public Property Owner() As String Implements _Account.Owner
            Get
                Owner = mvarOwner
            End Get
            Set(ByVal Value As String)
                mvarOwner = Value
            End Set
        End Property
    
        Public Function Deposit(ByVal amount As Decimal) _
            As Decimal Implements _Account.Deposit
        End Function
    End Class
    
    Friend Class Savings
        Implements _Account
    
        Private Function Account_Deposit(ByVal amount As Decimal) _
            As Decimal Implements _Account.Deposit
        End Function
    
        Private Property Account_Owner() As String _
            Implements _Account.Owner
            Get
            End Get
            Set(ByVal Value As String)
            End Set
        End Property
    
        Public Function AddInterest() As Object
        End Function
    End Class
    
  2. 创建和使用 Savings 帐户实例的代码与下面的代码类似。

    Dim savings As _Account
    savings = New Savings
    savings.Owner = "Jeff Pike"
    

如果希望 Account 作为基类,则可以修改向导输出。

使用接口和实现进行转换

  1. 运行“升级向导”。

  2. 删除 Account 类。

  3. 将 _Account 类重命名为 Account。

  4. 在 Savings 类中,将 _Account 替换为 Account。

    Friend Class Savings
        Implements Account
    
        Private Function Account_Deposit(ByVal amount As Decimal) _
            As Decimal Implements Account.Deposit
        End Function
    
        Private Property Account_Owner() As String Implements Account.Owner
            Get
            End Get
            Set(ByVal Value As String)
            End Set
        End Property
    
        Public Function AddInterest() As Object
        End Function
    End Class
    
  5. 创建和使用 Savings 帐户实例的代码与下面的代码类似。

    Dim savings As Account
    savings = New Savings
    savings.Owner = "Jeff Pike"
    

如果希望 Account 类作为基类,则可以修改向导输出。

使用类和继承进行转换

  1. 运行“升级向导”。

  2. 删除 _Account 接口。

  3. 在 Account 类中,删除 Implements 语句中对 _Account 的引用。

    Friend Class Account
        Private mvarBalance As Decimal
        Private mvarOwner As String
    
        Public Property Owner() As String
            Get
                Owner = mvarOwner
            End Get
            Set(ByVal Value As String)
                mvarOwner = Value
            End Set
        End Property
    
        Public Function Deposit(ByVal amount As Decimal) As Decimal
        End Function
    End Class
    
  4. 在 Savings 类中,将 Implements _Account 替换为 Inherits Account。

  5. 在 Savings 类中,移除 Owner 和 Deposit 成员。

    Friend Class Savings
        Inherits Account
    
        Public Function AddInterest() As Object
        End Function
    End Class
    
  6. 创建和使用 Savings 帐户实例的代码与下面的代码类似。

    Dim savings As Account
    savings = New Savings
    savings.Owner = "Jeff Pike"
    

请参见

任务

如何:用 Visual Basic 升级向导升级项目

参考

Class 语句 (Visual Basic)

Inherits 语句

Interface 语句 (Visual Basic)

Implements 语句

其他资源

Visual Basic 中的继承

Visual Basic 中的接口