Vererbung (Programmierung)

Aus unkompliziert.eu
Wechseln zu: Navigation, Suche

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