Foros del Web » Programación para mayores de 30 ;) » Java »

(Consulta) Constructor con parametros

Estas en el tema de (Consulta) Constructor con parametros en el foro de Java en Foros del Web. Hola amigos. Estoy viendo el tema de los constructores, no se ve complicado, pero tengo una duda. Si yo tengo un código algo así: Código: ...
  #1 (permalink)  
Antiguo 23/09/2013, 19:08
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
(Consulta) Constructor con parametros

Hola amigos.

Estoy viendo el tema de los constructores, no se ve complicado, pero tengo una duda.

Si yo tengo un código algo así:


Código:
public class humano{

private String nombre;
private int edad;
private int altura;    //  En centimetros

public humano(){
this.nombre = "Sin nombre";
this.edad = 0;
this.altura = 100;
}
}
Este constructor no tiene parámetros, pero si yo lo pongo asá:
Código:
public class humano{

private String nombre;
private int edad;
private int altura;    //  En centimetros

public humano(String nombre, int edad, int altura){
this.nombre = nombre;
this.edad = edad;
this.altura = altura;
}
}
Al segundo le tengo que pasar parámetros. Hasta aquí todo bien.

Luego, si yo creo un objeto pero solo le quiero pasar "X" cantidad de parámetros y no todos. ¿Se puede hacer eso?

Gracias.
  #2 (permalink)  
Antiguo 23/09/2013, 19:55
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 10 años, 11 meses
Puntos: 9
Respuesta: (Consulta) Constructor con parametros

Si, tenes 2 opciones.
1- Creas el objeto (sin pasarle ningún parámetro), y luego con los métodos set les pasas los parámetros que tu quieras.
2- Creas un nuevo constructor y le defines que parámetros va a recibir. Podes tener tantos constructores como quieras.
  #3 (permalink)  
Antiguo 25/09/2013, 21:29
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: (Consulta) Constructor con parametros

Cita:
Iniciado por cazador1992 Ver Mensaje
....
Gracias cazador se te agradece la ayuda
  #4 (permalink)  
Antiguo 26/09/2013, 17:07
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: (Consulta) Constructor con parametros

Lo que no puedes hacer es por ejemplo al costructor con parametros que tienes pasarle unicamente nombre y edad pero no decirle nada sobre la altura, te saltaria un error.

Puedes crear tantos constructores como quieras para incializar un objeto pasandole los parametros que quieras, pero es conveniente que todos esos constructores con parametros llamen en primer lugar al constructor sin parámetros para completar la informacion de los parametros que no le pases, es decir:


Código:
public class humano{

   private String nombre;
   private int edad;
   private int altura;    //  En centimeters

   public humano(){
      this.nombre = "Sin nombre";
      this.edad = 0;
      this.altura = 100;
   }

   public humano(String nombre, int edad, int altura){
      this.nombre = nombre;
      this.edad = edad;
      this.altura = altura;
   }

   public humano(String nombre, int edad){
      humano(); // Llamamos al constructor por defecto para que inicie la altura.
      setNombre(nombre);
      setEdad(edad);
   }
}
Por otro lado te recomiendo llamar a las clases con mayuscula, "Humano", por convenio suele hacer así. Y tambien te recomiendo llamar al set del parametro en vez de introducirlo "a pelo" como hice yo en el constructor que te añadi.
  #5 (permalink)  
Antiguo 26/09/2013, 22:47
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 10 años, 11 meses
Puntos: 9
Respuesta: (Consulta) Constructor con parametros

Es falso lo que dices, puedes llamar al constructor y pasarle solo el nombre y la edad; no te va a dar ningún error por no decirle nada de la altura, ya que todas las variables globales de la clase se inicializan al crear una nueva instancia de la clase.

Código Java:
Ver original
  1. public class Numero {
  2.  
  3.     int numero, contador;
  4.  
  5.     public Numero(int num) {
  6.         numero = num;
  7.     }
  8. }

Al ejecutar
Código Java:
Ver original
  1. Numero n = new Numero(23);
  2.         System.out.println(n.contador);

La salida va a ser 0,
  #6 (permalink)  
Antiguo 27/09/2013, 02:14
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: (Consulta) Constructor con parametros

cazador1992 está en lo cierto, edad y altura se iniciarían a 0 y String a null aunque el constructor humano() estuviese vacío.

También podrías darle valores directamente en la definición.

private String nombre="Sin nombre";
private int altura = 100;

Cualquier constructor que usaras luego podría sobreescribir ese valor si te interesa.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 27/09/2013, 02:24
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: (Consulta) Constructor con parametros

No es falso, si tu llamas a un constructor con tres parámetros y le pasas solo dos, te va a dar un error. Te va a decir que el constructor no esta definido.

cazador1992 tu estas diciendo que una clase puede tener parametros que no se inicien en los constructores y java por defecto te los iniciliza, eso es cierto pero yo no hablaba de eso. Hablaba de que si tu creas un constructor con ciertos parámetros, o cualquier otro metodo con parametros. Al llamar a ese metodo es obligatorio pasarle todos los parametros para los que esta definido.

Y que si rodo593 queria unas veces iniciar el humano con nombre solo, otras con nombre y edad, otras con edad y altura.. no le vale con usar el constructor
"human(String name, int age, double height)" tendria que crear uno por cada conbinacion de parameters. Y que en todos ellos seria conveniente llamar al constructor sin parametros (aunque si no lo hicieras java te inicial a null y 0). Por cierto me acabo de acordar que en java la llamada al constructor es simplemente this();

Última edición por AlexAlvarez; 27/09/2013 a las 02:34

Etiquetas: constructor, parametros, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.