BRN hat folgendes geschrieben: |
Ich habe eine Basisklasse "Fahrzeug" und eine von der Klasse "Fahrzeug" abgeleitete Klasse "Auto". In der Klasse "Auto" gibt es eine Variable "Geschwindigkeit".
Gibt es einen Weg, die Variable "Geschwindigkeit" nicht über die Klasse "Auto", sondern über "Fahrzeug" aufzurufen (also nicht "Auto.Geschwindigkeit" sondern "Fahrzeug.Geschwindigkeit")? |
Du musst die Variable in der Basisklasse definieren. Wenn das als protected oder public geschieht, ist sie auch in allen abgeleiteten Klassen bekannt.
Dringend zu empfehlen ist aber, zwischen internen Variablen und externen Eigenschaften zu unterscheiden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public class Fahrzeug { private double geschwindigkeit; public double Geschwindigkeit { get { return geschwindigkeit; } set { geschwindigkeit = value; } } } |
Bei "protected double Geschwindigkeit" wäre diese Eigenschaft nur in abgeleiteten Klassen bekannt: Auto.Geschwindigkeit, bei "public double Geschwindigkeit" dagegen auch von außerhalb (z.B. im Formular).
Da Deine Frage etwas missverständlich formuliert ist, weise ich ausdrücklich darauf hin: Eine Basisklasse kann nichts (niemals!) davon wissen, was in einer abgeleiteten Klasse zusätzlich definiert wird.
Zusätzlicher Hinweis: Ich empfehle englische Bezeichner. Ich bin zwar ein Verfechter davon, möglichst deutsch zu sprechen und zu schreiben (und zwar korrekt); aber unter NET ergibt das schnell einen grausamen Mischmasch wie "GeschwindigkeitChanging".
Gruß Jürgen