Alterar datos dentro de un constructor java

Estoy haciendo algo de programación Java básica donde tengo que crear clases que tienen constructores vinculados a otros constructores de clases. Por ejemplo, consulte mi siguiente código...

public class Friend {

    private String name;
    private Date dateOfBirth;
    private String phoneNum;

    public Friend(String name){
        this.name=name;
        this.dateOfBirth = null;
    }

    public Date setDOB(Date input){
        return dateOfBirth;
    }
}

public class Date {

    final int MINDAYSINMONTH=1; 
    final int MAXDAYSINMONTH=30;
    final int MINMONTHSINYEAR=1; 
    final int MAXMONTHSINYEAR=12;
    private int day;
    private int month;
    private int year;

    //constructor
    public Date(int day, int month, int year){
        this.day=day;
        this.month=month;
        this.year=year;
    }
}

Estoy tratando de crear un nuevo Friend, luego modifique el dateOfBirth valor que está dentro del Friend clase, así...

Friend trial = new Friend(input);
trial.setDOB(new Date(2, 15, 1991));

Pero mi salida sugiere que he creado un nuevo Friend pero el dateOfBirth no cambió a los valores que proporcioné arriba. ¿Podría alguien por favor ayudarme a entender lo que estoy haciendo mal?

preguntado el 03 de mayo de 12 a las 15:05

Vuelva a leer su código de establecimiento. ¿Asigna algo al campo dateOfBirth en este setter? ¿Por qué devuelve algo? -

3 Respuestas

porque tú setDOB el método solo devuelve el valor

 public Date setDOB(Date input){
    return dateOfBirth;
}

¿Dónde está poniendo algo? Deberías cambiar el nombre de ese método. getDOB, ya que eso es lo que está haciendo, y escribir un public void setDOB que establece el valor.

contestado el 03 de mayo de 12 a las 15:05

Tus setDOB El método es incorrecto: en realidad no está configurando nada en absoluto.

Intenta cambiar esto ...

public void setDOB(Date input){
    this.dateOfBirth = input;
}

Probablemente también debería tener un método getter para que pueda verificar el valor después de que se haya configurado ...

public Date getDOB(){
    return dateOfBirth;
}

contestado el 03 de mayo de 12 a las 15:05

-1, dar la respuesta en la tarea es contraproducente. Guíelos a la respuesta. - codigoshvgot

Lamento discrepar en esto: siempre encontré que la mejor manera de aprender Java era estudiar el código de otras personas. Si tienes código de otra persona que funciona correctamente, puedes estudiarlo para ver por qué funciona y así aprender de él. Al menos eso es lo que me parece lo mejor. Además, para un método simple de setter/getter, es difícil revelar algo. - wattostudios

las tres respuestas me ayudaron, después de leer las dos primeras de hvgotcodes y sp00m ya obtuve la respuesta, y leer la respuesta de WATTO me ayudó a saber si lo hice bien, no veo ningún problema si hay quienes dan pistas y aquellos que guían a través del método, ambas son buenas maneras, por cierto, gracias a todos los que respondieron, ahora finalmente puedo terminar mi programa. - Licuado

Pista: tu colocador se toma a sí mismo como captador.

contestado el 03 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.