3
respostas

Dúvida no Ex. 6 da Aula 3 - Começando com Orientação a objetos

Boa tarde pessoal gostaria de saber porque a data retorna nesse formato Data@1b2f5f0d, alguem sabe como retornar da maneira certa ????

3 respostas

Julian , Bom dia !

quando imprime a data , ela pega o método do toString da classe Object . e por isso que a impressão sai desse jeito .

Em java toda classe é filha de Object , mesmo você não mostrando que ela é filha de Object .

logo você pode sobre escrever o método toString na classe Data , assim quando imprimir , será impresso correto .

você poderia fazer o seguinte :

public String toString() {
    return this.dia + "/" + this.mes + "/" + this.ano;
}

assim retornará o formato correto .

espero ter ajudado ,

Bons estudos

Você deve ter implementado a função mostra da seguinte forma:

void mostra() {
    System.out.println(dataDeEntrada);
}

Neste caso a função println está tratando o parâmetro dataDeEntrada como um objeto do tipo Object. Desta forma a implementação do comando println utiliza a função dataDeEntrada.toString, que retorna uma representação textual do objeto. (Data representa o nome da classe e 1b2f5f0d é o hash do objeto).

A função mostra deveria ser implementada desta forma para mostrar o valor correto:

void mostra() {
    System.out.println("Data de entrada: " + dataDeEntrada.dia + "/" + dataDeEntrada.mes + "/" + dataDeEntrada.ano);
}

Estava com o mesmo problema e o Matheus resolveu!