¿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;
}
}
Respuesta de Francisco Cardo
1