I believe that you should reconsider your inheritance hierarchy. Consider the following heuristics:
If two or more classes use only shared data (there is no common behavior), then the shared data should be placed in the class that will be contained in each shared class.
If two or more classes have common data and behavior (i.e. methods), then these classes must inherit from a common base class that captures this data and methods.
If two or more classes have a common interface (i.e. messages, not methods), then they should inherit from a common base class only if they will be used polymorphically.
source
share