VB.Net 中的组合和继承
Composition and inheritance in VB.Net
原来是这样。我有 class A 和 B。Class A 中有一个成员是 Class 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)创建派生的 class。我希望成员 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
将在基 class 中创建一个(B 的)完整列表,该列表永远不会被使用!
您始终可以自由地将任何您想要的成员放入基础 classes 和派生 classes 中;没有什么能阻止你这样做。如何使用这些 classes 取决于您。如果您 需要 A
class 中的 B
个实例的集合,那很好,或者如果您需要 DB
class在DA
中,也很好。
您还可以对其进行编码,以便在将 DB
的实例添加到 DA
class 中的集合时,将该实例添加到base class' (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
那么你只会在基础 class A
.
中存储一个集合
这完全取决于您希望如何使用您的 class -- 您对设计的具体需求是什么。
原来是这样。我有 class A 和 B。Class A 中有一个成员是 Class 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)创建派生的 class。我希望成员 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
将在基 class 中创建一个(B 的)完整列表,该列表永远不会被使用!
您始终可以自由地将任何您想要的成员放入基础 classes 和派生 classes 中;没有什么能阻止你这样做。如何使用这些 classes 取决于您。如果您 需要 A
class 中的 B
个实例的集合,那很好,或者如果您需要 DB
class在DA
中,也很好。
您还可以对其进行编码,以便在将 DB
的实例添加到 DA
class 中的集合时,将该实例添加到base class' (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
那么你只会在基础 class A
.
这完全取决于您希望如何使用您的 class -- 您对设计的具体需求是什么。