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