C#에서 메서드 오버로드에 대한 질문이 있습니다. 부모 클래스와 하위 클래스가 있습니다.이 메소드의 오버로드는 어떻게됩니까?
class Parent
{
public virtual string GetMyClassName()
{
return "I'm a Parent";
}
}
class Child : Parent
{
public override string GetMyClassName()
{
return "I'm a Child";
}
}
나도 유형의 개체에 대해 조치를 두 클래스의 외부에서 선언 된 두 개의 정적 메소드가 : 나는이 방법이 모든 호출 방법을 테스트 할 때
static string MyClassName(Parent parent)
{
return "That's a Parent";
}
static string MyClassName(Child child)
{
return "That's a Child";
}
, 내가 생각하는 것을 얻을 이상한 결과 :
Parent p = new Child();
var str1 = MyClassName(p); // = "That's a Parent"
var str2 = p.GetMyClassName(); // = "I'm a Child"
왜 str1
는 "그것은 부모의"로 설정됩니까? 아마도 C#에서 메서드 오버로드를 오해하고 있습니다. 코드에서 자식 호출을 사용하도록하는 방법이 있습니까 (str1을 "Child"로 설정)? 가상 방법은 해상도가 런타임에서 발생 오버라이드 (override) 동안
참조 : http://stackoverflow.com/questions/13095544/overloaded-method-why-is-base-class-given-precedence – BradleyDotNET