Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: BelCrow en 02 de Septiembre 2014, 02:42

Título: pregunta CU00643 constructores con varios parámetros java
Publicado por: BelCrow en 02 de Septiembre 2014, 02:42
Citar
Si una clase define varios constructores, el constructor invocado por la sentencia new es el que coincide en número y tipo de parámetros con los utilizados en la sentencia new. Por ejemplo: taxi1 = new Taxi(); invoca al constructor general, mientras que taxi1 = new Taxi (“BFG-7432”) invoca al constructor que requiere un String como parámetro. new Taxi (“BFG-7432”, “Oeste”) invocaría al constructor que requiere dos String como parámetros. new Taxi (“BFG-7432”, “Oeste”, 2) invocaría al constructor que requiere dos String y un entero como parámetros, etc. No puede haber dos constructores que requieran el mismo número y tipo de parámetros (por ejemplo dos constructores que requieran un String) porque eso generaría una ambigüedad que daría lugar a un error de compilación.

Eso lo entiendo perfectamente, pero si en la clase Taxi tengo dos constructores, uno con valores por defecto y uno con varios parámetros (dos int y uno String), entonces taxi1 = new Taxi(2,50) me dará error de compilación por que necesita 3 parámetros para poder invocar ese constructor? "En este caso falta el String".....
Título: Re:pregunta CU00643
Publicado por: dongo en 02 de Septiembre 2014, 12:26
Si que te dará error, eso que intentas supongo que lo habrás deducido por php o javascript, donde los métodos y funciones, permiten tener parámetros opcionales con valores por defecto.

Eso no ocurre en java, en java si un constructor o un método, tiene 4 parámetros, obligatóriamente, tienes que pasarle los 4 parámetros.

Si tu tienes un constructor  con 3 parámetros, y quieres la posibilidad de crear objetos pasando solo 2 parámetros, pues deberás crearte otro constructor que solo reciba 2 parámetros.

En java para el problema de los parámetros por defecto en métodos y constructores, se resuelve mediante la sobrecarga.

Bueno un saludo, si no entiendes algo, nos cuentas.
Título: Re:pregunta CU00643
Publicado por: BelCrow en 02 de Septiembre 2014, 12:37
ok..... Gracias, mejor definido de hay no c puede :p....