众所周知,早期绑定是声明特定数据类型的对象的概念,它不能容纳任何其他类型的对象。虽然后期绑定是声明泛型对象的概念,并且可以保存任何其他类型的实例。考虑这个例子:
public abstract class Animal
{
public virtual string Name { get { return "Animal"; } }
}
public class Dog : Animal
{
public override string Name { get { return "Dog"; } }
}
public class Cat : Animal
{
public override string Name { get { return "Cat"; } }
}
public class Test
{
static void Main()
{
Animal animal = new Dog();
Animal animalTwo = new Cat();
Console.WriteLine(animal.Name);
Console.WriteLine(animalTwo.Name);
}
}
我的问题是编译器何时会识别对象的函数调用,无论是在编译时还是运行时?如果我不清楚,我很抱歉。但我的意思是要问 Virtual override 和 virtual 方法的概念是否涉及后期绑定?..如果不是那么这怎么可能。