В следующих C# фрагментПочему метод компилятора не может переопределить?
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal sound");
}
}
public class Dog:Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog sound");
}
}
class Program
{
static void Main(string[] args)
{
Animal an = new Dog();
an.MakeSound();
Console.ReadLine();
}
}
метод, который можно назвать определяется во время выполнения. Почему точно не может компилятор выяснить, какой метод вызывать?
Почему компилятор не видит, что an
относится к объекту Dog
, а затем выбрать метод из этого класса?
И как среда выполнения определяет, какой метод будет вызываться?
Вы когда-нибудь слышали об абстракции? –
Mine говорит, что звук собаки, если я скомпилирую это, мне кажется совершенно хорошим – BugFinder
Они не спрашивали, какой результат будет во время выполнения. Фактически, они ясно дали понять в самом фактическом вопросе, что они знают, что происходит во время выполнения. Вопрос в том, почему компилятор не знает, что '' '' 'Собака' во время компиляции. – Nick