It's a good idea because it avoids code repetition. I would just change the 4th constructor to private method (called "init(...)" for example). This way user would be forced to call constructor which takes 3 arguments, and that constructor would take care to invoke "init(...)" method accordingly.