If by "super type", and your comparison to interfaces, I'm guessing you want to focus on base abstract classes. (though you can use non-abstract base classes, but generally even an abstract class with no abstract members tends to communicate to the developer that it's intended to be implemented/inherited and doesn't stand on its own as a type)
There is no overall "best practice" when it comes to base/abstract classes vs interfaces. They both have their places in design practices. Really, the best practice comes about from the design you're implementing.
Probably the biggest difference when it comes to you design considerations is that base/abstract classes can only be inherited whereas interfaces can be implemented on any sort of class.
(EDIT: pilotcam came up with a far better example, see his comment to the question)
From your bird example, say for example you wanted to handle different birds like Parrots, Albatross, and Penguin and they all inherit from Bird
. But then your application also handles Dinosaur
types. You get to implementing Archaeopteryx. Does it inherit from Dinosaur
or from Bird
? Now if instead Bird
was an interface, you could simply have class Archaeopteryx : Dinsoaur, IBird
. This example is a bit contrived (there's a better one I'm sure), but hopefully it's good enough.
Of course, base/abstract classes are nice too. For example, by combining access modifiers, you could take advantage of perhaps implementing an internal
method to which your API accesses implementations but outside consumers of the class cannot.
There really are a slew of reasons to use one over the other, and neither one is really "better" to code against. It really depends on your application design, and arguably the metaphor you're coding against; what those objects are representing. Is your object actually a bird, or does it only behave like a bird? Does your API care? What will be better to maintain for your work?
Here's some more reading:
Interface vs Abstract Class (general OO) (take note of all the "linked" similar questions to this one)