title: Interface vs Base class
body: <p>When should I use an interface and when should I use a base class? </p>
  
  <p>Should it always be an interface if I don't want to actually define a base implementation of the methods?</p>
  
  <p>If I have a Dog and Cat class. Why would I want to implement IPet instead of PetBase? I can understand having interfaces for ISheds or IBarks (IMakesNoise?), because those can be placed on a pet by pet basis, but I don't understand which to use for a generic Pet.</p>