조기 바인딩은 특정 데이터 형식의 개체를 선언하는 개념이며 다른 유형의 개체를 보유 할 수 없다는 것이 알려져 있습니다. 후기 바인딩은 일반 유형의 객체 선언 개념이며 다른 유형의 인스턴스를 보유 할 수 있습니다.C# 조기 및 후기 바인딩 개념
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);
}
}
내 질문은 compilor 객체의 함수 호출을 인식하거나 할 때 컴파일 시간 또는 실행 시간이 될 것입니다 : 의 예를 생각해? 불명확하면 죄송합니다. 하지만 가상 오버라이드 및 가상 메서드의 개념에 늦은 바인딩이 필요한지 아닌지 묻는 중입니다. .. 그렇다면 어떻게 가능합니까?
:
바인딩에 대한 자세한 내용을 알고하려면 무슨 말을 만들고,이 게시물을 읽고 난 고양이 C = 새로운 고양이를 작성하는 경우(); funtion을 c.Name()으로 호출하십시오. 그럼 컴파일 시간에 인식 되나요 ?? –
가상 함수는 전체 계층 구조에 걸쳐 가상입니다. 따라서 파생 된 유형이 재정의 한 경우 (예 : BlackCat) c.Name에 여전히 일종의 조회가 포함됩니다. – GazTheDestroyer
당신은 ** 가상 디스패치가 늦은 바인딩의 형태라고 말합니다 ** i-e 함수가 가상으로 정의 된 경우이 함수에 대한 호출이 런타임에 인식됩니까 ??? –