Нет, здесь нет полиморфизма.Вы получили не виртуальный вызов не виртуального метода.В отличие от некоторых других языков, методы и свойства в C # по умолчанию не являются виртуальными.
Чтобы продемонстрировать, что полиморфизм действительно работает, вам нужно:
- Объявить метод виртуальнымв базовом классе
- Используйте модификатор переопределения в производном классе
- Используйте переменную с типом время компиляции базового класса для вызова, но с инициализациейэто с объектом производного типа.
Вот короткая, но полная программа, демонстрирующая все это:
using System;
class Base
{
public virtual void Foo()
{
Console.WriteLine("Base.Foo");
}
}
class Derived : Base
{
public override void Foo()
{
Console.WriteLine("Derived.Foo");
}
}
class Test
{
static void Main()
{
Base x = new Derived();
x.Foo(); // Prints Derived.Foo
}
}