继承自另一个类的类

时间:2010-08-12 17:56:41

标签: vb.net inheritance class

我有一个Class FileDoc

Public Class FileDoc
Inherits BaseClass

Public Sub DeleteDoc()

dim catId as integer = Cat_ID

End Sub

    a bunch of properties...
End Class

我还有另一个班级......

Public Class BaseClass

Private _Cat_ID As Integer
Public Property Cat_ID() As Integer
    Get
        Return _Cat_ID
    End Get
    Set(ByVal value As Integer)
        _Cat_ID = value
        AssignAllInfo()
    End Set
End Property

Private _Docs As List(Of FileDoc)
Public Property Docs() As List(Of FileDoc)
    Get
        Return _Docs
    End Get
    Set(ByVal value As List(Of FileDoc))
        _Docs = value
    End Set
End Property

我的问题是,由于FileDoc来自BaseClass,当我在FileDoc类中编码时,如何从BaseClass访问值。就像我在子DeleteDoc()中的示例一样,我正在尝试访问此FileDoc所属的基类的Cat_ID。

添加继承不会将值传递给类,只传递属性。

提前谢谢

1 个答案:

答案 0 :(得分:0)

继承不会那样做。请记住,您正在使用Classes,它是您的对象的一种模板。您将其与实例混合在一起,实例是包含数据的类的实例化版本。

例如,当您创建FileDoc的实例时,您将获得一个包含BaseClassFileDoc字段的空白对象。 FileDoc不知道是否有其他BaseClass实例包含数据(也不应该包含数据)。这样考虑一下 - 如果你有多个BaseClass个实例然后你实例化了一个FileDoc类,那么BaseClass个实例应该用它来填充数据?

有两种方法可以解决您想要做的事情。首先,您可以想象您的BaseClass是抽象的(不确定如何在VB中执行此操作)。因此,您不会实例化BaseClass的任何实例。 BaseClass仅用于提供其他类可以继承的基础。那么,你要做的是实例化FileDoc,然后用你需要的数据填充它。

您的其他选项包含BaseClass,但不会从中继承。相反,您可以将FileDoc视为接受BaseClass作为参数的包装器。所以这意味着FileDoc有一个类型为BaseClass的私有成员。这样您就不需要继承,但可以访问BaseClass中的数据。

选择适合您情况的方法。