¿Se puede llamar a un método en el constructor? Java

Necesito invocar un método cuando se construya el objeto.

Estoy haciendo una clase Persona en donde su DNI se va a generar al crearse el objeto, por lo que tengo que llamarlo en el constructor y no se como hacerlo, o no se si se puede hacer eso:

public class Persona{
    private String nombre=" ";
    private int edad=0;
    private int dni;
    private final char SEXO="H";
    private double peso=0.0;
    private double altura=0.0;
    public Persona(){ 
    }
    public Persona(String nombre , int edad , char sexo){
          this.nombre=nombre;
          this.edad=edad;
          this.sexo=sexo;
    }
    public Persona(String nombre , int edad , char sexo , double peso , double altura){
          this.nombre=nombre;
          this.edad=edad;
          this.dni = generarDNI();
          this.sexo=sexo; 
          this.peso=peso;
          this.altura=altura;
    }
    public void setNombre(String nombre){
        this.nombre=nombre;
    }
    public String getNombre(){
        return this.nombre;
    }
    public void setEdad(int edad){
        this.edad=edad;
    }
    public double getEdad(){
        return this.edad;
    }
    public double getDni(){
        return this.dni;
    }
    public void setSexo(char sexo){
        this.sexo=sexo;
    }
    public double getSexo(){
        return this.sexo;
    }
    public void setPeso(double peso){
        this.peso=peso;
    }
    public double getPeso(){
        return this.peso;
    }
    public void setAltura(double altura){
        this.altura=altura;
    }
    public double getAltura(){
        return this.altura;
    }
    public double calcularIMC(){
      double imc=0.0;
      imc=(peso/(Math.pow(altura,2)));
      if(imc<20){
          return -1;
      }
      if(imc>=20 && imc<=25){
          return 0;
      }
      if(imc>25){
          return 1;
      }
    }
    public boolean esMayorDeEdad(){
        if(edad>=18){
            return true;
        }else{
            return false;
        }
        return false;
    }
    public void comprobarSexo(char sexo){
        if(this.sexo==sexo){
        }else{
            this.sexo='H';
        }
    }
    public String toString(){
     String frase=" ";
        return frase= "Nombre: "+getNombre()+"\n"+"Edad: "+getEdad()+"\n"+"D.N.I: "+getDni()+"\n"+"Sexo: "+getSexo()+"\n"+"Peso: "+"\n"+"Altura: "+getAltura()+"";
    }
    private void generarDNI(){
    this.dni= (int)(Math.random()*123456789)+1;
}
}

1 Respuesta

Respuesta
1

Rocio roo.

Si realmente quieres llamar a este método desde el propio constructor de la clase puedes hacerlo sin ningún tipo de problema.

En principio nada te impide hacer lo que solicitas. Te pongo como ejemplo el primer constructor pero puedes aplicarlo al resto de constructores si lo necesitas...

public Persona(String nombre , int edad , char sexo){
          this.nombre=nombre;
          this.edad=edad;
          this.sexo=sexo;
          // Con esta línea en cada constructor evitas llamar al método generarDNI();
          this.dni=(int)(Math.random()*123456789)+1;
    }

Con este ejemplo, puedes evitar construir el método generarDNI();

Puedes elegir la forma que más te guste.

Espero que te haya servido y que valores la pregunta. Si tienes cualquier otra duda estoy a tu disposición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas