Vererbung (Programmierung)
Aus unkompliziert.eu
Vererbung
Beim Überladen einer Methode der Basisklasse in einer Unterklasse muss folgendes beachtet werden.
Beispiel:
Basisklasse
class A { public virtual void Methode1() { Console.WriteLine("A Methode1"); } public virtual void Methode2() { Console.WriteLine("A Methode2"); } }
Erbende Klasse
class B:A { public new void Methode1() { Console.WriteLine("B Methode1"); } public override void Methode2() { Console.WriteLine("B Methode2"); } }
Die Klassen werden folgendermaßen verwendet:
A oA = new A(); B oB = new B(); A oAB = new B();
In der Basisklasse (Klasse A) muss die Methode als virtual gekennzeichnet werden.
Beim Überladen der Funktion in der Unterklasse (Klasse B) gibt es zwei Möglichkeiten.
1. Die überladene Funktion kann als new gekennzeichnet werden. Das Schlüsselwort new bewirkt, dass ein Objekt beim Methodenaufruf immer die Methode der Klasse verwendet, unter der das Objekt deklariert wurde.
Methodenaufruf | Ausgabe |
---|---|
oA.Methode1(); | A Methode1 |
oB.Methode1(); | B Methode1 |
oAB.Methode1(); | A Methode1 |
2. Die überladene Funktion kann als override gekennzeichnet werden. Das Schlüsselwort override bewirkt, dass
- ein Objekt der Basisklasse beim Methodenaufruf die Methode Basisklasse verwendet
- ein Objekt der Unterklasse beim Methodenaufruf die Methode der Unterklasse verwendet
- ein Objekt, das als ein Objekt der Basisklasse deklariert wurde, real aber ein Objekt der Unterklasse enthält, die Methode der Unterklasse verwendet.
Methodenaufruf | Ausgabe |
---|---|
oA.Methode2(); | A Methode2 |
oB.Methode2(); | B Methode2 |
oAB.Methode2(); | B Methode2 |