事前バインディングは、特定のデータ型のオブジェクトを宣言する概念であり、他の型のオブジェクトを保持できないことが知られています。遅延バインディングは、ジェネリック型のオブジェクトを宣言する概念であり、他の型のインスタンスを保持できます。例を考えてみましょう:
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);
}
}
私の質問は、コンパイラがいつオブジェクトの関数呼び出しを認識するのか、コンパイル時か実行時かということです。不明な場合は申し訳ありません。しかし、仮想オーバーライドと仮想メソッドの概念には遅延バインディングが含まれているかどうかを尋ねるつもりですか? ..そうでない場合、これはどのように可能ですか。