Если поле number определено, то есть было передано, его значение просто преобразуется к классу int. Если же это поле не определено, то есть его просто нет, несуществующее значение, относящееся к классу void, приравняется к 0, и ничего страшного не произойдет - код будет выполняться дальше.