【问题标题】:using a mustinherit property in base class在基类中使用 mustinherit 属性
【发布时间】:2015-07-18 09:58:59
【问题描述】:

我有一个基类 Table,它具有我希望在所有派生类中具有的默认 mustoverride 属性 Rows。

Public MustInherit Class TableBase
  Default Public MustOverride ReadOnly Property Rows(iID As Integer) As RowBase
End Class

当然是行基类

Public Class RowBase
End Class

从名为 RowX 的行库派生的类

Public Class RowX
    Inherits RowBase
    Public Property Name As String
End Class

从表基派生的表类 TableX。

Public Class TableX
    Inherits TableBase

    Default Public Overrides ReadOnly Property Rows(iID As Integer) As RowBase
        Get
        End Get
    End Property
End Class

还有一个带有以下方法的测试表单:

_test = _tableX(2).Name

构建它会告诉我名称不是 Rowbase 的属性。 我无法将 tableX 中的属性 Rows 的类型更改为 RowX,因为它是必须继承的。

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: c# vb.net oop


    【解决方案1】:

    RowX 应该是TableX 的一个属性,作为表“has-a”行。

    并且属性Name 不应该是public 使其成为private 并且具有作为public 的getter 和setter 方法,因为它违反了封装

    所以现在可以使用_tablex._rowx.Name 访问Name。 因此,您可以将代码修改为:

    Public MustInherit Class TableBase
      public property row As RowBase
      Default Public MustOverride ReadOnly Property Rows(iID As Integer) As RowBase
    End Class
    
    Default Public Overrides ReadOnly Property Rows(iID As Integer) As RowBase
        row.Name=iTD
        End Get
    End Property
    

    假设您要设置作为名称传递的值。

    作为 Java 开发人员,如果有错误的语法,请见谅

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 2014-09-03
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 2016-12-02
      相关资源
      最近更新 更多