An object with half-filled fields is a bug waiting to happen. A constructor runs once when new is called and makes sure every object starts in a valid state. Use it to set required values, like a student's name and marks, at the moment the object is created. If a value is optional or can change later, a setter or a default is usually better than adding yet another constructor.