POO - 12 - A Classe Object
-
Upload
ludimila-monjardim-casagrande -
Category
Technology
-
view
2.157 -
download
0
Transcript of POO - 12 - A Classe Object
![Page 1: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/1.jpg)
A Classe Object
Fundamentos da Linguagem Java
Ludimila Monjardim Casagrande 2012
Classes Básicas da API do Java
![Page 2: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/2.jpg)
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.
![Page 3: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/3.jpg)
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.
![Page 4: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/4.jpg)
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());
}
![Page 5: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/5.jpg)
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 + "]";
}
}
![Page 6: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/6.jpg)
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 + "]";
}
}
![Page 7: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/7.jpg)
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
![Page 8: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/8.jpg)
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);
}
![Page 9: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/9.jpg)
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.
![Page 10: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/10.jpg)
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.
![Page 11: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/11.jpg)
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
![Page 12: POO - 12 - A Classe Object](https://reader035.fdocumentos.tips/reader035/viewer/2022082123/58a0e0a51a28abeb378b6b75/html5/thumbnails/12.jpg)
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/