Several problems:
Combine inheritance and object composition:
The Rationale Underlying the Solution:
Inheritance allows adding of new field and methods.
Composition demands a fixed interface.
Decoupling interface and implementation:
Improved extensibility: