代码之家  ›  专栏  ›  技术社区  ›  Iggy

从其他类继承的类

  •  0
  • Iggy  · 技术社区  · 14 年前

    我有一个班级文件

    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来自基类,当我在fileDoc类中编码时,如何从基类访问值。就像我在sub-deletedoc()中的示例一样,我正在尝试访问这个fileDoc所属的基类的cat_id。

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

    提前通知

    1 回复  |  直到 14 年前
        1
  •  0
  •   Vivin Paliath    14 年前

    继承不能做到这一点。请记住,您使用的是类,类是对象的一种模板。你把它和 实例 它是包含数据的类的实例化版本。

    例如,当您创建 FileDoc ,您将得到一个包含两个字段的空对象 BaseClass 菲利多克 . 菲利多克 不知道是否还有其他 基底玻璃 包含数据的(也不应该包含数据)。这样想-如果你有多个 基底玻璃 实例,然后实例化 菲利多克 类,哪个 基底玻璃 它应该使用实例来填充数据吗?

    你想做什么有两种方法。首先,你可以想象 基底玻璃 抽象(不确定如何在VB中实现)。因此,您不会实例化 基底玻璃 . 基底玻璃 只存在于提供其他类可以继承的基。所以,你要做的是实例化 菲利多克 然后用您需要的数据填充它。

    你的 其他 选项是具有 基底玻璃 ,但不能从中继承。相反,你可以想到 菲利多克 作为接受 基底玻璃 作为参数。所以这意味着 菲利多克 具有类型为的私有成员 基底玻璃 . 这样就不需要继承,但可以访问 基底玻璃 .

    选择适合您情况的方法。