Sunteți pe pagina 1din 5

TI0052 Tcnicas de Programao para Engenharia II Herana, Polimorfismo e Interface O que e para que serve a classe Object Essa

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

getClass()
Esse mtodo retorna informaes do objeto atual, como o package e o nome da classe. Muito importante caso voc tenha vrios tipos de objeto, onde um herda do outro etc. Ele vai retornar o nome da classe que objeto foi criado, e no sua superclasse.

clone()
Retorna uma referncia - ou cpia - de um objeto. Voc deve implementar esse mtodo conforme sua necessidade. Para uma cpia total, voc deve implementar a cpia de cada varivel 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 mtodo para que ele retorne uma referncia objeto que queremos copiar. Pode usar tanto: Object copia = original.clone() ou: NomeDaClasse copia = (NomeDaClasse) original.clone(); Mais informaes 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 questo. equals(Object obj) Faz a comparao entre dois Objects, e retorna true se os objetos forem o mesmo, e false se no forem o mesmo. til para saber se dois objetos apontam para o mesmo local na memria. hashCode() Esse mtodo retorna um inteiro nico de cada objeto, muito usado em Collections. Falaremos mais dele nos artigos sobre colees, em breve. Veja sobre HashMap:

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html O hashCode tem uma ligao com o mtodo equals(), conforme voc pode ver no exemplo dado, l embaixo. bastante til quando trabalhamos com arquivos, para agilizar buscas e comparaes 1. Exerccio com os mtodos da classe Object: A classe ObjectClass.java
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()); } }

A classe ClasseTeste.java
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; } }

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

2. Exerccio com Herana, Polimorfismo e Interface Crie um projeto Java e implemente as seguintes classes: A interface ICMS:
public interface ICMS { static final double aliquota = 0.9; double meuICMS(); }

A classe Carro:
public class Carro implements ICMS { String fabricante, modelo; int ano, vel_max, peso; double preco; int num_rodas = 4; public Carro(double d) { preco = d; } // getters & setters public double meuICMS(){ return ICMS.aliquota * 0.17D; } public String toString() {

String str = "Carro:\n"; str += str += str += str += preco*meuICMS())); return } } "fabricante: " + fabricante; ", modelo: " + modelo; ", ano: " + ano + ", velocidade mxima: " + vel_max; ", preo: R$ " + String.format("%.2f", (preco + str;

A classe Consultoria:
public class Consultoria implements ICMS { String empresa, tipo; double valor; public Consultoria (double valor){ this.valor = valor; } public double meuICMS(){ return ICMS.aliquota * 0.1D; } public String toString() { String str = "Consultoria:\n"; str += str += str += valor*meuICMS())); return } } "empresa: " + empresa; ", tipo: " + tipo; ", valor R$ " + String.format("%.2f", (valor + str;

Uma classe de Teste:


public class Main { public static void main(String args[]) { ICMS compra[] = new ICMS[2]; compra[0] = new Consultoria(1000); compra[1] = new Carro(30000); //compra[0].meuICMS(); //compra[1] = new ICMS(); System.out.println("Faturas e caractersticas processadas polifomicamente pela interface:\n "); // processa os ICMS for (int i = 0; i <

compra.length; i++)

System.out.println(compra[i] + "\nAliquota " + compra[i].meuICMS() + "\n"); } }

S-ar putea să vă placă și