내가이 있다고 가정하자 :상속 된 과부하를 호출하면 어떤 메소드가 호출됩니까?
내가new SuperiorFoo().Bar(new C())
이유를 실행하면 호출됩니다 과부하
class A { }
class B : A { }
class C : B { }
class Foo
{
public void Bar(A target) { /* Some code. */ }
}
class AdvancedFoo : Foo
{
public void Bar(B target)
{
base.Bar(target);
// Some code.
}
}
sealed class SuperiorFoo : AdvancedFoo
{
public void Bar(C target)
{
base.Bar(target);
// Some code.
}
}
? 계단식으로 호출 될 것 같아요.하지만 그 동작이 보장되는지, 이유가 무엇인지 파악할 수 없습니다.
은
은 그래서, 모두 Foo
및 SuperiorFoo
에 대한 AdvancedFoo
, 그래서 함께 base.
작품은 어느라고 왜됩니다 업데이트?
막대가 고정되어 있지 않으므로 SuperiorFoo.Bar를 호출 할 수 없습니다. –
'막대'가 가상 재 지정이 아니기 때문에 단순히 막대에 방법을 숨기고 있습니다. – dasblinkenlight
@SachinKainth 보시다시피, "새로운 SuperiorFoo.Bar (..)"가 있습니다. @dasblinkenlight 아니요. 다른 형식화 된 인수를 받아들이므로 오버로드됩니다. – AgentFire