poo - 12 - a classe object

12
A Classe Object Fundamentos da Linguagem Java Ludimila Monjardim Casagrande 2012 Classes Básicas da API do Java

Upload: ludimila-monjardim-casagrande

Post on 22-Jan-2018

2.157 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: POO - 12 - A Classe Object

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

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

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

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

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

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

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

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

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

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

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