Почему мы используем override и virtual, если он дает тот же эффект, когда мы не используем переопределение и виртуальные?
пример 1:
class BaseClass
{
public virtual string call()
{
return "A";
}
}
class DerivedClass : BaseClass
{
public override string call()
{
return "B";
}
}
вывод: B
Пример 2:
class BaseClass
{
public string call()
{
return "A";
}
}
class DerivedClass : BaseClass
{
public string call()
{
return "B";
}
}
и вывод все тот же:
вывод: B
для запуска теста:
class Program
{
static void Main(string[] args)
{
DerivedClass dc = new DerivedClass();
Console.WriteLine(dc.call());
Console.ReadKey();
}
}
Является ли компилятор автоматически добавляться и переопределяться во время компиляции?
Я был бы рад, если бы кто-нибудь объяснил мне причину использования виртуальных и переопределить.