Think about this: do you only want inheritance for reusability, or is there an is-a relationship? if it is just the former, then delegation is a better solution. For the latter you will need to use interfaces and probably delegation again to achieve this. So the answer is use delegation.