Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

A classe Object: o que é, uso e principais métodos

Agora que já sabemos o que é herança, como a herança se comporta em relação aos construtores, uso do @Override e vimos os modificadores de acesso private, public e protected, vamos apresentar uma classe de suma importância bem como alguns de seus métodos: a classe Object.

O que é e para que serve a classe Object

Essa classe é importante por um motivo bem simples: toda e qualquer classe em Java é subclasse da Object.
Mesmo quando não usamos 'extends Object', o Java automaticamente faz sua classe herdar a Object.

Lembra que, várias vezes, ao longo de nosso curso online de Java usamos o método toString() sem nem ter declarado ele?
Pois é, ele já é declarado na classe Object, por isso podemos usar ele diretamente. Como nossa classe é subclasse da Object, ela também tem os métodos da Object.


Métodos da classe Object:


getClass()
Esse método retorna informações do objeto atual, como o package e o nome da classe.
Muito importante caso você tenha vários tipos de objeto, onde um herda do outro etc.
Ele vai retornar o nome da classe que objeto foi criado, e não sua superclasse.


clone()
Retorna uma referência - ou cópia - de um objeto.
Você deve implementar esse método conforme sua necessidade. Para uma cópia total, você deve implementar a cópia de cada variável corretamente.
Veja sobre a interface Cloneable: http://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html

No exemplo ao final do artigo, fizemos um @Override do método para que ele retorne uma referência objeto que queremos copiar.
Pode usar tanto:
Object copia = original.clone()

Ou:
NomeDaClasse copia = (NomeDaClasse) original.clone();

Mais informações em: http://en.wikipedia.org/wiki/Clone_(Java_method)


toString()
Retorna uma string com a package, nome da classe e um hexadecimal que representa o objeto em questão.


equals(Object obj)
Faz a comparação entre dois Objects, e retorna true se os objetos forem o mesmo, e false se não forem o mesmo.
É útil para saber se dois objetos apontam para o mesmo local na memória.


hashCode()
Esse método retorna um inteiro único de cada objeto, muito usado em Collections.
Falaremos mais dele nos artigos sobre coleções, em breve.
Veja sobre HashMap: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

O hashCode tem uma ligação com o método equals(), conforme você pode ver no exemplo dado, lá embaixo.
É bastante útil quando trabalhamos com arquivos, para agilizar buscas e comparações.


Outros métodos:

Veja a documentação da classe Object:
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html



Exemplo dos métodos da classe Object:


-->objectClass.java
package teste;

public class objectClass{

    public static void main(String[] args) {
        classeTeste classe1 = new classeTeste();
        classeTeste2 classe2 = new classeTeste2();
        
        System.out.println("\ngetClass() da classeTeste: " + classe1.getClass());
        System.out.println("getClass() da classeTeste2: " + classe2.getClass());
        
//        Object classe3 = classe2.clone();
        classeTeste2 classe3 = (classeTeste2) classe2.clone();
        System.out.println("\nObjeto classe3 é clone ao classe2? "+classe3.equals(classe2));

        System.out.println("\ntoString da classe1: "+classe1.toString());
        System.out.println("toString da classe2: "+classe2.toString());
        
        
        System.out.println("\nObjeto classe1 é igual classe2 ? " + classe2.equals(classe1));
        System.out.println("Objeto classe1 é igual classe1 ? " + classe1.equals(classe1));
        System.out.println("Objeto classe2 é igual classe3 ? " + classe2.equals(classe3));
        
        System.out.println("\nHash code da classe 1: "+classe1.hashCode());
        System.out.println("Hash code da classe 2: "+classe2.hashCode());
        System.out.println("Hash code da classe 3: "+classe3.hashCode());
    }

}




-->classeTeste.java
package teste;

public class classeTeste extends Object{
    public String s1;
    
    public classeTeste(){
        System.out.println("Objeto da classeTeste criado!");
        this.s1= "oi";
        
    }
    
    @Override
    protected Object clone(){
        return this;
    }
}



--> classeTeste2.java
package teste;

public class classeTeste2 extends classeTeste{
    public String teste;
    
    public classeTeste2(){
        System.out.println("Objeto da classe classeTeste2 criado");
    }

}


Um comentário:

Anônimo disse...

Muito bem explicado ! Obrigado pelo texto, me ajudou bastante.

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java