Please have a look at the following question: Favor composition over inheritance
The accepted answerer says: ” it extends Hashtable, in order to reuse its methods and to avoid reimplementing some of them using delegation”. I am not sure what the answerer means by: reimplementing some of them using delegation. What does the answerer mean?
I am familiar with Delegates and the Observer design pattern.
When using composition, if you want to support a method that the underlying class has, you must define your own implementation that simply delegates (or uses) the same method on the underlying class. It can be tempting to use inheritance in this case to avoid writing that simple (delegated) method, but inheritance really should be used only when an IS-A relationship exists.
For example,