Inheritance Hierarchy and Overriding inherited methods