번호. 즉, 메서드가 호출되는 형식에 따라 런타임에 가상 메서드가 확인됩니다. 이것을 고려하십시오 :
public void PrintHi(Parent instance)
{
Console.WriteLine(instance.SayHi());
}
당신은 그 방법 세 가지 방법 중 하나를 호출하지만, 당신이 본 모든 위의 방법 인 경우 런타임 때까지 결과를 알 수 없습니다 : :
public class Parent
{
public virtual string SayHi()
{
return "Hi!";
}
}
public class NiceChild : Parent
{
public override string SayHi()
{
return "Hello World!";
}
}
public class MeanChild : Parent
{
public override string SayHi()
{
return "You suck!";
}
}
을 이제, 우리는 방법을
PrintHi(new Parent()); // Hi
PrintHi(new NiceChild()); // Hello World!
PrintHi(new MeanChild()); // You suck!
위대한 설명! 고맙습니다 저스틴. –