说我有一个父类:
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()
关键字,但是没有。
答案 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