VB.Net中的组合和继承

时间:2015-11-02 14:23:35

标签: vb.net inheritance composition

所以情况就是如此。我有A类和B类.A类中有一个成员,即B类

Public Class A
    public _lstB as list (of B)
    public sub new()
        _lstB = B.Init()
    end sub
end Class

Public Class B
    public shared sub Init() as list (of B)
        ....
    end sub
End Class

不,我想要做的是为A和B创建一个派生类(比方说DA和DB)。我希望成员B在DA中替换为DB。这可能吗?

Public Class DA
    inherits A
    public _lstDB as list (of DB)

    public sub new()
        mybase.new 
        _lstDB = DB.Init()
    end sub
end Class

Public Class DB
    inherits B
    public shadows shared sub Init() as list (of DB)
        ....
    end sub
End Class

我完全相信这是要走的路,因为在致电

mybase.new 

将在基类中创建一个完整的列表(B),永远不会被使用!

1 个答案:

答案 0 :(得分:1)

您可以随意在基类和派生类中放置您想要的任何成员;没有什么可以阻止你这样做。您希望如何使用这些类取决于您。如果您需要 B类中A个实例的集合,那么这很好,或者您需要DBDA个类的集合那也没关系。

您也可以对其进行编码,以便在将DB的实例添加到DA类中的集合时,将该实例添加到基类'({{ 1}})集合,这是正常的,因为A派生自DB。例如,如果您在B中使用此方法:

A

Public Overridable Sub AddNew(item As B) _lstB.Add(item) End Sub 中的此方法:

DA

然后,您只在基类Public Overrides Sub AddNew(item As B) MyBase.AddNew(item) End Sub 中存储一个集合。

这完全取决于您希望如何使用您的课程 - 您的具体需求是什么。