Es así, es distinto a Java, no puedes tener múltiples métodos con nombres iguales pero con firmas distintas (diferencias en los parámetros).
De todas formas, es una práctica bastante discutida, ya que no siempre ayuda a terminar con un buen diseño, ya que en vez de tener un solo método que hace una tarea concreta tienes múltiples métodos que parecen ser el mismo pero que en realidad hacen cosas distintas... entonces... son métodos iguales o distintos? deberían llamarse igual?
Sugerencias para estos casos: - Crea métodos distintos según el tema
- Si requieres variación en la firma, crea un array o un "objeto parámetro" y oculta dentro las distintas opciones.
- Para el caso del constructor, piensa conceptualmente cual es la mínima información que define al objeto para estar creado de forma elemental, y posteriormente usar métodos get / set según la necesidad.
Por ejemplo, si dices que en tu contexto una clase Usuario puede crearse con id y nombre, pero puede no tener clave y tal vez ni email, aunque hay casos que tienes todos estos datos al crear el objeto, puedes resolver que:
"La información básica para crear el usuario es id y nombre", posteriormente asignas la clave y el email si cuentas con ellos.