Entwickler-Ecke

C# - Die Sprache - Variablenzugriff über Basisklasse auf abgeleitete Klasse


BRN - Do 20.09.07 13:49
Titel: Variablenzugriff über Basisklasse auf abgeleitete Klasse
Hallo,

ich habe übertragen folgendes Problem:

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")?

Danke!

Gruß
BRN


Greenberet - Do 20.09.07 14:47

base.Geschwindigkeit


JüTho - Do 20.09.07 16:13
Titel: Re: Variablenzugriff über Basisklasse auf abgeleitete Klasse
user profile iconBRN 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


BRN - Do 20.09.07 20:51
Titel: Re: Variablenzugriff über Basisklasse auf abgeleitete Klasse
user profile iconJüTho hat folgendes geschrieben:

Eine Basisklasse kann nichts (niemals!) davon wissen, was in einer abgeleiteten Klasse zusätzlich definiert wird.


Hi Jürgen,

damit ist meine Frage beantwortet. Genau das hatte ich nämlich vor - ich wollte die Variable über die Basisklasse aufrufen.

Danke!

Gruß
BRN