I don't think that is a good idea. You should leave Shape as an abstract base class and keep Sphere as a sub class. The user should never call Shape.