重写继承类中的默认属性值



>假设我定义了以下父类:

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 中是如何完成的
  • 如果您所需要的只是让属性返回不同的值,那么您所做的似乎很好

最新更新