2010-08-12 99 views
0

我有一个类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。

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

Thx预先

+0

您可以添加一个标签语言。谢谢。 – avacariu 2010-08-12 18:28:10

回答

0

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

例如,当您创建FileDoc的实例时,您会看到一个空白对象,其中包含BaseClassFileDoc的字段。 FileDoc不知道是否存在其他包含数据的实例(也不应该包含数据)BaseClass。想想这样 - 如果你有多个BaseClass实例,然后你实例化了一个FileDoc类,它应该使用哪个实例来填充数据?

有两种方法可以去做你想做的事情。首先,你可以想象你的BaseClass是抽象的(不知道如何在VB中做到这一点)。所以你不会实例化任何BaseClass的实例。 BaseClass完全存在以提供其他类可以继承的基础。所以,你要做的是实例化FileDoc,然后用你需要的数据填充它。

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

选择适合您情况的方法。

+0

所以,我应该发送一个BaseClass的实例到FileDoc? 我该怎么做? – Iggy 2010-08-12 18:08:05

+0

在VB中没有真正完成OOP,但是你可以维护一个属性类型为BaseClass的? 'Private baseClassInstance As BaseClass'。 – 2010-08-12 18:21:45

+0

我在FileDoc中添加了一个Cat_ID属性,并在实例化FileDoc的一个实例时设置了它... thx帮助 – Iggy 2010-08-12 18:39:21