I'd add that it makes no sense to call the constructor repeatedly for an existing object (calls from subclass constructors being an exception). What would the purpose be? There is no convention that create() should be able to safely clean up and re-init an existing object so such situations would be better served by a separate method.