Einzelnen Beitrag anzeigen

Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Unterschied zwischen new virtual und override

  Alt 5. Jan 2006, 15:56
Hallo!

Ich hätte mal ne Frage:
Ich habe eine Klasse (zb Klasse1), die eine Methode (ich nenne die Methode mal Foo()) hat, welche virtual ist.
Wenn ich jetzt eine andere Klasse (Klasse2) von Klasse1 ableite, kann ich jetzt die Methode Foo() entweder überschreiben (override) oder eine neue virtuelle Methode daraus machen (new virtual).
Wo genau liegt hier der Unterschied?
Zuerst dachte ich, dass man, wenn man die 1. Möglichkeit nimmt die Methode zu überschreiben, in einer Weiteren Ableitung die Methode nichtmehr erneut überschreiben kann, was aber trotzdem möglich ist.
Wo also liegt hier der Unterschied?

Beispiel:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
  public class Parent
  {
    public virtual void Foo()
    {
      Console.WriteLine("Parent");
    }
  }

  public class Klasse1 : Parent
  {
    public override void Foo() /* <-- Hier könnte ich
                                * anstatt von override
                                * auch new virtual schreiben
                                * */
    {
      Console.WriteLine("Klasse1");
    }
  }

  public class Klasse2 : Klasse1
  {
    public override void Foo()
    {
      Console.WriteLine("Klasse2");
    }
  }

  public class Program
  {
    static void Main(string[] args)
    {
      Klasse1 k1 = new Klasse1();
      k1.Foo();
      Klasse2 k2 = new Klasse2();
      k2.Foo();

      Console.ReadLine();
    }
  }
}
Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat