我有一个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。
添加继承不会将值传递给类,只传递属性。
提前谢谢
答案 0 :(得分:0)
继承不会那样做。请记住,您正在使用Classes,它是您的对象的一种模板。您将其与实例混合在一起,实例是包含数据的类的实例化版本。
例如,当您创建FileDoc
的实例时,您将获得一个包含BaseClass
和FileDoc
字段的空白对象。 FileDoc
不知道是否有其他BaseClass
实例包含数据(也不应该包含数据)。这样考虑一下 - 如果你有多个BaseClass
个实例然后你实例化了一个FileDoc
类,那么BaseClass
个实例应该用它来填充数据?
有两种方法可以解决您想要做的事情。首先,您可以想象您的BaseClass
是抽象的(不确定如何在VB中执行此操作)。因此,您不会实例化BaseClass
的任何实例。 BaseClass
仅用于提供其他类可以继承的基础。那么,你要做的是实例化FileDoc
,然后用你需要的数据填充它。
您的其他选项包含BaseClass
,但不会从中继承。相反,您可以将FileDoc
视为接受BaseClass
作为参数的包装器。所以这意味着FileDoc
有一个类型为BaseClass
的私有成员。这样您就不需要继承,但可以访问BaseClass
中的数据。
选择适合您情况的方法。