Calling a base abstract method in an override of that method
<p>If I have the following:</p>

<p>e.g.</p>

<pre><code>public abstract class ClassA
{
     protected abstract void ValidateTransaction();
}

public abstract class ClassB : ClassA
{
     protected override void ValidateTransaction()
     {
          // some custom logic here
     }
}

public class ClassC : ClassB
{
     protected override void ValidateTransaction()
     {
          base.ValidateTransaction();
          // some additional custom logic here
     }
}
</code></pre>

<p>So <em>I did not find usages on ClassC's ValidateTransaction.</em>  I don't see it being called anywhere.  </p>

<p>So then I guess how does this work?  I mean it's calling the mehtod at the top of the stack here (calls the ClassB's override method and then includes logic in my ClassC's override of ClassB's method?)</p>

<p>This doesn't make sense to me why or how this works or the intention here.</p>

<p><strong>UPDATED</strong></p>

<p>Ok so I did find a spot where ClassA's PerformTransaction() method is called from a lot of sub classes in our project.  </p>

<p>So ClassA now looks like this with more details for you here:</p>

<blockquote>
<pre><code>public abstract class ClassA
{
     public void PerformTransaction()
     {
           ValidateTransaction();
           // and calls some other code here.
     }

     protected abstract void ValidateTransaction();
}
</code></pre>
</blockquote>

<p>Ok then we still have:</p>

<pre><code>public abstract class ClassB : ClassA
{
     protected override void ValidateTransaction()
     {
          // some custom logic here
     }
}

public class ClassC : ClassB
{
     protected override void ValidateTransaction()
     {
          base.ValidateTransaction();
          // some additional custom logic here
     }
}


public class SomeAbritraryClass : ClassC
{
      ClassA.PerformTransaction();
      ...
 }
</code></pre>

<p>so ClassA.PerformTransaction() is being called in some classes that inherit ClassC.</p>
