继承没有继承的属性

时间:2014-01-15 12:14:29

标签: vb.net inheritance composition

我在这里有一个奇怪的问题,我想答案是否定的,但是......有没有办法继承一个类'prooperties 而不继承它,只是通过组合? / p>

我现在得到的是这样的:

Public Class Mixer
    Inherits SomeOtherClass

    Private _motor As Motor

    Public Property Active() As Boolean
        Get
            Return _motor.Active
        End Get
        Set(ByVal value As Boolean)
            _motor.Active = value
        End Set
    End Property
    Public Property Frecuency() As Boolean
        Get
            Return _motor.Frecuency
        End Get
        Set(ByVal value As Boolean)
            _motor.Frecuency = value
        End Set
    End Property

    'More properties and functions from Mixer class, not from Motor
    '
    '
End Class

所以我需要类Mixer公开显示它的所有Motor属性,但我不想继承Motor,因为它已经从SomeOtherClass继承。有没有更快,更清洁,更简单的方法呢?

谢谢!

修改 只是为了澄清:我知道我可以使用一个接口,但由于Motor的实现对于所有类都是相同的,我想直接继承它的属性,而不必在每个具有Motor的类中再次实现它们...但没有继承马达。

3 个答案:

答案 0 :(得分:0)

我相信您可以在界面中使用属性,然后实现该界面。

看看这个question

答案 1 :(得分:0)

您可以随时将私人_摩托车变成公共财产,然后您可以间接到达汽车公司。我知道这不是你所要求的。

答案 2 :(得分:0)

最广泛接受的解决方案(如果不是唯一的解决方案)是提取在包含Motor实例的每个类中实现的公共接口。

Public Interface IMotor

    Property Active As Boolean

    Property Frequency As Boolean

End Interface


Public Class Motor
    Implements IMotor

    Public Property Active As Boolean Implements IMotor.Active

    Public Property Frequency As Boolean Implements IMotor.Frequency

End Class


Public Class Mixer
    Inherits SomeOtherClass
    Implements IMotor

    Private _motor As Motor

    Public Property Active() As Boolean Implements IMotor.Active
        Get
            Return _motor.Active
        End Get
        Set(ByVal value As Boolean)
            _motor.Active = value
        End Set
    End Property

    Public Property Frequency() As Boolean Implements IMotor.Frequency
        Get
            Return _motor.Frequency
        End Get
        Set(ByVal value As Boolean)
            _motor.Frequency = value
        End Set
    End Property

End Class