Sobrescrvendo o metodo ToString [Resolvido]

E ae galera!!

Sei que esse tema já foi muito falado no forum, mas eu ainda não achei um resolução pro meu problema =\

Então vamos a ele…

Em um dos exercícios da Caelum fj16, é pedido sobrescrever o toString com o objetivo de formatar a minha data.
Que esta em formato calendar e quando imprimo esse valor vem dados amais, sei que daria pra formatar fora do toString com SimpleDateFormat, mas o exercicio pede no toString.

exercicio 2.10 mais especificamente questão 1.

tenho 1 classe basica chamada negocio, e é nela em que devo sobrescrever o metodo.

package br.com.caelum.argentum;

import java.util.Calendar;

public class Negocio {
	
	
	private final double preco;
	private final int quantidade;
	private final Calendar data;
	
	public Negocio(double preco, int quantidade, Calendar data) {
		this.preco = preco;
		this.quantidade = quantidade;
		this.data = data;
	}

	public double getPreco() {
		return preco;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public Calendar getData() {
		return data;
	}
	
	public double getVolume(){
		
		return preco * quantidade;
	}
}

Espero ter ficado claro…

Se alguem souber ae porfavor me ajude…

Vlww

Quando fala sobreescrever o metodo, quer dizer que é para voce escrever novamente o metodo que tem na outra classe.

Por exemplo, vamos dizer que voce tem uma classe chamada Pessoa assim:

class Pessoa { public void metodo(){ System.out.println("Metodo da Classe Pessoa"); } }

e outra classe que sobrescreve esse metodo.

class Fisica extends Pessoa {
   public void metodo(){
      System.out.println("Metodo da classe Fisica");
   }
}

Assim, se voce criar um objeto de Fisica e chamar o metodo ‘metodo’, ele vai mostrar “Metodo da classe Fisica”. Porem, se voce nao tivesse criado esse metodo na classe, ele iria chamar o metodo da classe que ele extende, ou seja, iria imprimir “Metodo da Classe Pessoa”.

Agora, porque sobrescrever toString() se voce nao esta nem herdando de nenhuma classe? Bem, na verdade voce esta herdando, da classe Object, indiretamente. Veja so o metodo que temos na classe Object.

http://download-llnw.oracle.com/javase/6/docs/api/java/lang/Object.html#toString()

Abraços

O método toString() deve retornar uma String.

O método format() da classe SimpleDateFormat retorna uma String, formatada.

Ligando os pontos…

Blzaaa xD

Problema Resolvido.

public String toString() {
		// TODO Auto-generated method stub
		String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(data.getTime());
		
		return "[Preço = "+preco+", Quantidade = "+quantidade+", Data = "+dataFormatada+"]";
	}

Agora toda vez que faço isso:

System.out.println(objDaClasseComMetodoReescrito); // no caso negocio

retorna:
[Preço = 40.5, Quantidade = 100, Data = 14/09/2010]

Brigadaoo xp

Só tira agora esse “TODO” aí do método… :stuck_out_tongue: