2014-01-15 2 views
0

여기에 이상한 질문이 있는데, 대답은 '아니오'라고 가정합니다. 그러나 ... 상속하지 않고 클래스를 상속하는 방법이 있습니까? 그냥 구성에 따라을 상속합니까?상속없는 상속 속성

지금은이 같은 것입니다 가지고 무엇 :

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 

그래서 나는 공개적으로 모든 그것의 모터 특성을 보여 클래스 믹서가 필요합니다,하지만 난 이미 SomeOtherClass에서 상속 이후 모터를 상속하지 않으려는 . 이 작업을 수행하는 빠르고, 깨끗하고 쉬운 방법이 있습니까?

감사합니다.

편집 : 그냥 명확히에 : 나는 인터페이스를 사용할 수 있습니다 알고 있지만, 모터의 구현은 모든 클래스에 대해 동일하기 때문에, 나는 그들을 다시 구현하지 않고, 직접 속성을 상속 싶습니다 각 클래스는 모터를 가지고 있지만 ... 상속받은 모터는 없습니다.

+1

인터페이스를 살펴 보셨습니까? http://msdn.microsoft.com/en-us/library/28e2e18x.aspx. – User999999

+0

그래, 물론,하지만 인터페이스를 구현하면 모든 인터페이스의 속성 구현을 코드화 할 수 있습니다. 단지 피할 수있는 것입니다 ... –

+0

'Motor'를 만들면 코드가 지금과 같은 모양이 완벽한 솔루션입니다. 'Mixer'는 공통 인터페이스 인'IMotor'을 구현합니다. –

답변

0

인터페이스 내에서 속성을 사용하고 해당 인터페이스를 구현할 수 있다고 생각합니다.

당신은 항상 공용 속성은 다음 간접적으로 모터의 특성을 얻을 수있을 것입니다 귀하의 개인 _motor 만들 수있는이 question

0

에서보세요. 나는 그것이 당신이 요구하고있는 것이 아니라는 것을 잘 압니다.

0

의 인스턴스를 래핑하는 모든 클래스에서 구현되는 공통 인터페이스를 추출하는 것이 가장 널리 채택 된 솔루션입니다 (유일한 해결책이 아닌 경우).

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