Klassendeklaration

01/02/2010 - 22:04 von Wolfgang Wienke | Report spam
Hallo!
Kann mir jemand erlàutern, was an der folgenden Klassendefinition in der
gross geschriebenen hervorgehobenen Zeile falsch ist? (Als Warnung
angezeigt)
Ich weiß natürlich, dass das so nicht sinnvoll ist, ich habe alles
Überflüssige weggelassen.
In der abgleiteten Klasse "Motor" müsste doch bei Get- und Set-Methoden
auf die entsprechenden Methoden der Grundklasse "Lampe" zugegriffen
werden, oder sehe ich das falsch?

Public Class Lampe
Private mEin As Boolean
Overridable Property ein() As Boolean
Get
Return mEin
End Get
Set(ByVal value As Boolean)
mEin = value
...
End Set
End Property
End Class

Public Class Motor
Inherits Lampe
Overrides Property ein() As Boolean
Get
Return ein
End Get
Set(ByVal value As Boolean)








EIN = VALUE
















.
End Set
End Property
End Class
Mit freundlichen Gruessen

Wolfgang Wienke
 

Lesen sie die antworten

#1 Armin Zingler
01/02/2010 - 22:54 | Warnen spam
Wolfgang Wienke schrieb:
Hallo!
Kann mir jemand erlàutern, was an der folgenden Klassendefinition in der
gross geschriebenen hervorgehobenen Zeile falsch ist? (Als Warnung
angezeigt)
Ich weiß natürlich, dass das so nicht sinnvoll ist, ich habe alles
Überflüssige weggelassen.
In der abgleiteten Klasse "Motor" müsste doch bei Get- und Set-Methoden
auf die entsprechenden Methoden der Grundklasse "Lampe" zugegriffen
werden, oder sehe ich das falsch?

Public Class Lampe
Private mEin As Boolean
Overridable Property ein() As Boolean
Get
Return mEin
End Get
Set(ByVal value As Boolean)
mEin = value
...
End Set
End Property
End Class

Public Class Motor
Inherits Lampe
Overrides Property ein() As Boolean
Get
Return ein
End Get
Set(ByVal value As Boolean)
>>>>>>>> EIN = VALUE
.
End Set
End Property
End Class




Du besetzt innerhalb der Property-Set-Prozedur das Property nochmal.
Dadurch wird dieselbe Prozedur nochmal rekursiv aufgerufen, und darin
nochmal und nochmal. Teste es mal Schritt für Schritt durch,
dann siehst du es.

Und in der Property-Get-Prozedur gibst du außerdem die unsichtbare
lokale Variable "ein" zurück.

Richtig ist also:

return mybase.Ein

und

mybase.Ein = Value


Armin

Ähnliche fragen