Create and implement a class hierarchy

You want to create a hierarchy of types because you have some implementation code you want to share between all types. You also have some method signatures you want to share. What should you use?

A class with virtual methods
An abstract class
An interface
A sealed class