If you have logic that will be the same for all the derived classes, it is best to go for a abstract class instead of an interface. You can implement multiple interfaces but only inherit from one class. Encapsulation hides the internal state and behavior of an object