poo - 12 - a classe object
TRANSCRIPT
A Classe Object
Fundamentos da Linguagem Java
Ludimila Monjardim Casagrande 2012
Classes Básicas da API do Java
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 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 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 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 5
Sobrescrevendo o Método toString()
Toda vez que o método
public String toString( ) é
implementado em uma
classe, está ocorrendo a
sobreposição do mesmo
método declarado na
superclasse Object.
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;
}
//getters e setters...
@Override
public String toString() {
return "Usuario [nome=" + nome +
", login=" + login + ", senha=" + senha + "]";
}
}
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 6
Sobrescrevendo o Método toString()
Neste caso o método
public String toString( )
está sobrepondo a
implementação do
mesmo método na
superclasse Usuario.
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
public String toString() {
return "Aluno [nome=" + getNome() +
", login=" + getLogin() +
", senha=" + getSenha() +
", ra=" + ra + "]";
}
}
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 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 resultado será Aluno [nome=Ana, login=ana,
senha=123, ra=30200], isto é, o método chamado
foi o da subclasse. Embora a variável seja do tipo
Object, o objeto para o qual ela aponta é do tipo
Aluno.
0x0123 o
login senha
ra
ana
123
30200
Ana nome
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 8
O Método equals de Object
A implementação do método equals na classe
Object é:
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
==.
public boolean equals(Object obj) {
return (this == obj);
}
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 9
Sobrescrevendo o Método equals
public boolean equals(Object obj) {
if (this == obj){
return true;
}
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;
}
}
return false;
}
0x0123 u1
login senha
ana
123
Ana nome
0x0456 u2
login senha
ana
123
Ana nome
Método equals da classe Usuario.
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 10
Sobrescrevendo o Método equals
public boolean equals(Object obj) {
if (this == obj){
return true;
}
if (obj instanceof Aluno){
Aluno a = (Aluno)obj;
if (this.ra == a.ra && this.getNome().equals(a.getNome())) {
return true;
}
}
return false;
}
0x0123 a1
login senha
ra
ana
123
30200
Ana nome
0x0456 a2
login senha
ra
ana
123
30200
Ana nome
Método equals da classe Aluno.
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
Fundamentos do Java ©2012 Ludimila Monjardim Casagrande 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/