O que é e para que serve a classe 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:
Muito bem explicado ! Obrigado pelo texto, me ajudou bastante.
Postar um comentário