Entwickler-Ecke
C# - Die Sprache - Eigenschaften vererben
The_Dude1974 - Mi 26.04.06 13:29
Titel: Eigenschaften vererben
Hallo,
kann man durch Vererbung Eigenschaften erweitern?
In meinem Bsp:
Ich habe 2 Klassen CSignalOut und CSignalIn. Beide erben von der abstrakten Klasse CSignal.
Bei beiden Klassen kann ich den aktuellen Wert abfragen. Aber nur bei CSignalOut kann ich einen
Wert setzen.
BeispielCode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| abstract class CSignal { protected double m_value = 0.0; public virtual double Value { get { return m_value; } } }
class CSignalOut : CSignal { public override double Value { set { m_value = value; } } } |
Gibt es irgendwie eine Möglichkeit das Problem sauber zu lösen?
Im voraus vielen Dank.
Moderiert von
raziel: C#-Tags hinzugefügt
r2c2 - Do 27.04.06 13:56
Geb nicht allzu viel auf, das, was ich jetzt sage, aber wie willst du das "sauberer" lösen? IMHO is das schon relatv "sauber". Das einzige, was mir noch einfällt, wär folgendes:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| abstract class CSignal { protected double m_value = 0.0; public virtual double Value { get { return m_value; } set; } } |
[meta]ganz so sicher bin ich mir da aber auch nicht. Mach noch nicht so lange C#...[/meta]
mfg
Christian
Robert_G - Sa 29.04.06 14:27
Sauberer wäre wohl entweder
- das Feld in der Basisklasse privat zu deklarieren und in den überschriebenen Accessors die Property des Vorgängers (base.Value) zu benutzen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| abstract class Base { int value;
public virtual int Value { get{ return value; } }
} class Descendant { public override int Value { get{ return base.Value; } }
} |
- ODER: Die Property abstract deklarieren:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| abstract class Base { public abstract int Value{ get; }
} class Descendant { int value;
public override int Value { get{ return value; } }
} |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!