POO - 12 - A Classe Object

2.128 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.128
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
11
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

POO - 12 - A Classe Object

  1. 1. Fundamentos da Linguagem Java A Classe Object Classes Básicas da API do Java Ludimila Monjardim Casagrande 2012
  2. 2. A Classe Object  Object é a classe raiz da hierarquia de classes do Java.  Toda classe em Java, mesmo as que não pertencem à API, estendem Object, ainda que isso não tenha sido explicitamente declarado.  Sendo assim, toda instância de uma classe implementada em Java é um Object e herda os métodos declarados nesta superclasse.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 2
  3. 3. Métodos Especiais de Object  Existem dois métodos de Object que merecem atenção especial por serem muito utilizados.  Esses métodos são:  public String toString()  public boolean equals(Object obj)  A intenção por trás dos métodos equals() e toString() é justamente que eles sejam sobrescritos de modo mais específico e adequado para cada uma das subclasses.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 3
  4. 4. O Método toString() de Object  A implementação do método toString() na classe Object é: public String toString( ) { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 4
  5. 5. Sobrescrevendo o Método toString() public class Usuario extends Object { private String nome; private String login; private String senha; public Usuario(){ } public Usuario(String nome, String login, String senha) { super(); this.nome = nome; this.login = login; this.senha = senha; Toda vez que o método } public String toString( ) é //getters e setters... implementado em uma @Override classe, está ocorrendo a public String toString() { sobreposição do mesmo return "Usuario [nome=" + nome + ", login=" + login + ", senha=" + senha + "]"; método declarado na } superclasse Object. }Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 5
  6. 6. Sobrescrevendo o Método toString() public class Aluno extends Usuario { private int ra; //registro acadêmico do aluno public Aluno(){ } public Aluno(String nome, String login, String senha, int ra){ super(nome, login, senha); this.ra = ra; } … @Override Neste caso o método public String toString() { public String toString( ) return "Aluno [nome=" + getNome() + está sobrepondo a ", login=" + getLogin() + implementação do ", senha=" + getSenha() + mesmo método na ", ra=" + ra + "]"; } superclasse Usuario. }Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 6
  7. 7. Chamada de Métodos Sobrepostos public class Main { public static void main(String[] args) { /* A variável o do tipo Object recebe qualquer objeto, * pois todo objeto estende Object */ Object o = new Aluno(“Ana”, “ana”, “123”, 30200); System.out.println(o.toString()); } } Qual será o resultado? o 0x0123 O resultado será Aluno [nome=Ana, login=ana, nome Ana senha=123, ra=30200], isto é, o método chamado ana login foi o da subclasse. Embora a variável seja do tipo senha 123 Object, o objeto para o qual ela aponta é do tipo ra 30200 Aluno.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 7
  8. 8. O Método equals de Object  A implementação do método equals na classe Object é: public boolean equals(Object obj) { return (this == obj); }  O objetivo deste método é realizar a comparação do objeto como um todo e não a comparação somente entre as referências para os objetos, o que é proporcionado pelo operador ==.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 8
  9. 9. Sobrescrevendo o Método equals public boolean equals(Object obj) { u1 0x0123 if (this == obj){ return true; nome Ana login ana } senha 123 if (obj instanceof Usuario) { Usuario u = (Usuario)obj; if (this.nome.equals(u.nome) && this.login.equals(u.login) && this.senha.equals(u.senha)) { return true; u2 0x0456 } } nome Ana return false; login ana } senha 123 Método equals da classe Usuario.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 9
  10. 10. Sobrescrevendo o Método equals public boolean equals(Object obj) { a1 0x0123 if (this == obj){ nome Ana return true; login ana } senha 123 if (obj instanceof Aluno){ ra 30200 Aluno a = (Aluno)obj; if (this.ra == a.ra && this.getNome().equals(a.getNome())) { return true; } a2 0x0456 } return false; nome Ana } login ana Método equals da classe Aluno. senha 123 ra 30200Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 10
  11. 11. Implementação do Método equals  Sugestão de passo a passo para implementar o método equals: 1. Verifique se a referência para o objeto corrente (this) é igual à referência do objeto passado como argumento usando o operador de igualdade. 2. Se as referências forem iguais retorne true. 3. Verifique se o objeto passado como argumento é instância da classe corrente usando o operador instanceof. Em caso negativo, retorne false. 4. Em caso positivo, compare os valores internos dos dois objetos usando o operador de igualdade para comparação de primitivos e o método equals para a comparação de objetos, incluindo Strings. 5. Se os valores forem iguais retorne true, caso contrário retorne false.Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 11
  12. 12. Referências  Capítulo 15 – Object. Orientação a Objetos em Java. K19 Treinamentos. http://www.k19.com.br/downloads/apostilas-java.  Caelum: Ensino e Soluções em Java. FJ-11 – Java e Orientação a Objetos. http://www.caelum.com.br/curso/fj-11-java- orientacao-objetos/Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 12

×