poo - 12 - a classe object

Post on 22-Jan-2018

2.157 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

top related