Método toString()

9 respostas
Alexandre_Laranja

é possivel sobreescrever o método toString?!

9 Respostas

ViniGodoy

Claro, por que não?

Alexandre_Laranja

pq ja ouvi falar q ela é terminada com final

P

Pra checar se é e ver como o método é montado, é só apertar CTRL e clicar em cima do nome do método, ao menos no Eclipse. Portanto, é só fazer isso pra checar.

Mas quanto a pergunta, dá sim.

blackfalcon

O que seria “sobreescrever o método toString”?

Desculpa pela duvida tola… :frowning:

Abraços

ViniGodoy

A classe String é final.
O método toString() da classe Object, não é.

Já respondendo também ao black falcon: O método toString() é chamado toda vez que o Java precisa encontrar a representação textual de um objeto. Isto é, sempre que você concatena uma variável a uma String, ou passa ela como se fosse uma String.

Então é possível fazer isso:

public class Cliente {
   private String nome;
   
   public Cliente(String nome) { 
      this.nome = nome; 
   }

   public String toString() { 
      return "Cliente: " + nome); 
   }
}

public static void main(String args[]) {
   Cliente cliente1 = new Cliente("Black falcon");
   Cliente cliente2 = new Cliente("ViniGodoy");
   Cliente cliente3 = new Cliente("Alexandre Laranja");
   System.out.println(cliente1 + ", " + cliente2 + ", " + cliente3);

Esse código imprime:
Cliente: Black falcon, Cliente: ViniGodoy, Cliente: Alexandre Laranja

Isso pq, como os objetos cliente1, cliente2 e cliente3 precisaram ser textualmente exibidos, o método toString() de cada um deles foi implicitamente chamado. ;)

blackfalcon

Achei um tutorial que fala sobre sobrescrever metodos…

http://beduihno.blogspot.com/2008/06/sobrescrevendo-mtodos-em-java.html

Mas tipo, nao entendi qual a vantagem de se sobrescrever um metodo… :frowning:

Alguem pode tirar essa duvida?

Abraços

P

Cara, existem métodos reescritos ou sobrecarregados.

Sobre os reescritos, a vantágem é simples. Você pode fazer uma implementação sua desse método, alterá-lo conforme tal necessidade.

Dá uma lida sobre sobrecarga de métodos, também . Você vai usar muito métodos reescritos e/ou sobrecarregados in your coding life. =)

ViniGodoy

Veja no exemplo acima. Sobrescrever toString() permitiu a classe Cliente saber como a string dela é melhor representada.
Se o método toString() não fosse sobrescrito, o mesmo código imprimiria algo como:
Cliente@1293, Cliente@1921, Cliente@2d0a

Não muito amigável, concorda? Há também a possibilidade de sobrescrever o método equals (para dizer se dois objetos são iguais), hashCode (cria uma chave quase única para o objeto), etc.

Enfim, sobrescrever permite especializar o comportamento de um método qualquer, numa área mais baixa da sua hierarquia de classes.

blackfalcon

Saquei um pouco melhor agora… depois vou dar uma estudada no que voces falaram :slight_smile:

Obrigado ViniGodoy e Sergio Figueras pela ajuda!

Abraços

Criado 21 de junho de 2008
Ultima resposta 22 de jun. de 2008
Respostas 9
Participantes 4