>假设我定义了以下父类:
Public Class Parent
Public Property Prop1 As String = "MyDB1"
End Class
我希望继承它,但希望该属性对子类具有不同的值。
我想我可以这样做:
Public Class Child
Inherits Parent
Public Sub New()
MyBase.New()
MyBase.Prop1 = "MyDB2"
End Sub
End Class
但我想知道这是否是执行此操作的最佳方法,或者是否存在可覆盖属性之类的东西,或者这是否只是整个糟糕的编程实践?
谢谢!
在 C# 中,为了让属性被覆盖,您可以将类成员标记为 virtual
并且此关键字 vb.net 等值是Overridable
。
public virtual int MyProperty {get;set;}
此属性可以在子类中被覆盖,如下所示:
public override int MyProperty {
get{
//return some other thing
}
}
Vb.NET 等效:
在超级类:
Public Overridable Property MyProperty As Integer
Get
End Get
Set
End Set
End Property
在子类中:
Public Overrides Property MyProperty As Integer
Get
//return some other thing
End Get
End Property
根据您的评论,这是我的意见:
- 如果控制基类,请使其
Overridable
是否打算根据派生类型的业务规则更改其值 - 如果你无法控制基类,并且需要"重写"该属性,则可以"隐藏"基属性;在 C# 中,它看起来像
new public int MyProperty { ... }
但我不确定这在 VB 中是如何完成的 - 如果您所需要的只是让属性返回不同的值,那么您所做的似乎很好