如何强制子类为继承的字段分配唯一值?

时间:2015-07-30 16:30:00

标签: vb.net inheritance field

说我有一个父类:

Public MustInherit Class ParentClass
    Protected str As String
    Public MustOverride Sub Method()
End Class

然后我有一个孩子班:

Public Class ChildClass
    Inherits ParentClass
    Public Overrides Sub Method()
    End Sub
End Class

目前我无法确保为str分配一个唯一值(对于继承ParentClass的每个类,该值将不同)。

有没有办法强制任何子类(甚至是我不创建的子类)为str分配一个值,类似于MustOverride强制子类实现的方式{{ 1}?我认为可能有一个Method()关键字,但是没有。

3 个答案:

答案 0 :(得分:1)

啊哈!我想我已经找到了自己做的方法。

我将在ParentClass中创建一个受保护的构造函数,它接受一个String并将其分配给该字段。

ParentClass

Protected Sub New(ByVal s As String)
    Me.str = s
End Sub

现在,每个类都必须实现一个构造函数,该构造函数调用带有String的单个ParentClass构造函数。

ChildClass

Public Sub New()
    MyBase.New("String")
End Sub

这似乎解决了我的问题。

有没有更好的方法来解决这个问题,还是我的头上钉了一针?

答案 1 :(得分:1)

使用名称类,确保唯一值

dealloc

请注意,在您的解决方案中,没有什么可以防止两个女儿类具有相同的初始化。

答案 2 :(得分:0)

其中一种可能的模式是使用getter函数而不是字段。在每个子类中定义它。它可能是也可能不是你想要的。

Public MustOverride Function Str() As String