method resolution with base types

2019-09-03 17:25发布

问题:

My situation is this:

public class InheritedClass : BaseClass
{
    public override void SomeMethod()
    {
        AnotherMethod();
    }
    public override void AnotherMethod()
    {
    }
}

public class BaseClass
{
    public virtual void SomeMethod()
    { }
    public virtual void AnotherMethod()
    { }
}

So which method is called when I call InheritedClassInstance.SomeMethod? Does it call InheritedClassInstance.AnotherMethod, or the BaseClass's AnotherMethod?

回答1:

It calls InheritedClassInstance.AnotherMethod()

If you wanted it to call the base class AnotherMethod() you would write base.AnotherMethod()



回答2:

It will call the derived method on the inherited class unless you explicitly call the base method (base.AnotherMethod())