title: implementing polymorphism in c#, how best to do it?
body: <p>first question here, so hopefully you'll all go gently on me!</p>
  
  <p>I've been reading an awful lot over the past few days about polymorphism, and trying to apply it to what I do in c#, and it seems there are a few different ways to implement it.  I hope I've gotten a handle on this, but I'd be delighted even if I haven't for clarification.</p>
  
  <p>From what I can see, I've got 3 options:</p>
  
  <ol>
  <li>I can just inherit from a base
  class and use the keyword
  '<code>virtual</code>' on any methods that I
  want my derived classes to
  override.   </li>
  <li>I could implement an abstract class with virtual methods
  and do it that way,  </li>
  <li>I could use an interface?</li>
  </ol>
  
  <p>From what I can see, if I don't require any implementation logic in the base, then an interface gives me the most flexibility (as I'm then not limiting myself with regards multiple inheritance etc.), but if I require the base to be able to do something on top of whatever the derived classes are doing, then going with either 1 or 2 would be the better solution?</p>
  
  <p>Thanks for any input on this guys - I have read so much this weekend, both on this site and elsewhere, and I <em>think</em> I understand the approaches now, yet I just want to clarify in a language specific way if I'm on the right track.  Hopefully also I've tagged this correctly.</p>
  
  <p>Cheers,
  Terry</p>