Descobrindo a classe de um objeto: instanceof

Nesse rápido, e útil, tutorial ensinaremos como descobrir a classe de um objeto através da keyword:
instanceof

Conforme sua aplicação Java for crescendo, facilmente ela atingirá dezenas ou centenas de classes, subclasses, superclasses, classes abstratas e outros nomes da Orientação a Objetos.

Somente pelo nome do objeto pode ficar difícil descobrir a qual classe ela pertence.
Porém, o Java provém uma solução simples pra isso, a keyword: instanceof

O nome é bem sugestivo e fácil de entender. Seu uso, mais ainda.
A sintaxe é:

nomeObjeto instanceof Classe

Essa é uma expressão, que retorna true ou false.
Vamos usar o exemplo de nosso tutorial passado, sobre Como Manipular Subclasses através do Polimorfismo o exemplo dos animais.


-->zoo.java
public class zoo {

    public static void main(String[] args) {
        Vaca mimosa = new Vaca();
        Gato bichano = new Gato();
        Carneiro barnabe = new Carneiro();

        Animal bichos[] = {mimosa, bichano, barnabe};
        
        
        for(int i=0 ; i < bichos.length ; i++)
        {
                if(bichos[i] instanceof Vaca){
                    System.out.print("A vaca tem " + bichos[i].numeroPatas + " patas e faz ");
                    bichos[i].som();
                    System.out.println();
                }
                
                if(bichos[i] instanceof Gato){
                    System.out.print("O gato tem " + bichos[i].numeroPatas + " patas e faz ");
                    bichos[i].som();
                    System.out.println();
                }
                
                if(bichos[i] instanceof Carneiro){
                    System.out.print("O carneiro tem " + bichos[i].numeroPatas + " patas e faz ");
                    bichos[i].som();
                    System.out.println();
                }
        }
    }

}



-->Animal.java
public abstract class Animal {
    protected String nome;
    protected int numeroPatas;
    
    public abstract void som();

}



-->Vaca.java
public class Vaca extends Animal {
    public Vaca(){
        this.nome = "Mimosa";
        this.numeroPatas = 4;
        
    }
    @Override
    public void som(){
        System.out.print("MUUUU");
    }

}



-->Gato.java
public class Gato extends Animal{
    public Gato(){
        this.nome = "Bichano";
        this.numeroPatas = 4;
        
    }
    @Override
    public void som(){
        System.out.print("MIAU");
    }
}



-->Carneiro.java
public class Carneiro extends Animal{
    public Carneiro(){
        this.nome = "Banabé";
        this.numeroPatas = 4;
        
    }
    
    @Override
    public void som(){
        System.out.print("BÉÉÉ");
    }
}

2 comentários:

Tiago disse...

Muito bom. Parabéns!

Anônimo disse...

Parabéns, bom exemplo de encapsulamento e herança, para descrever o uso de instanceof. =D

Dicas e Novidades de Java por e-mail

Sabe quanto custa um bom livro de java?
Entre R$ 100,00 e R$300,00

Sabe quanto custa um bom curso presencial de Java?
Entre R$ 1.500,00 até R$ 4.000,00

Sabe quanto custa estudar pelo Java Progressivo?
Absolutamente nada.

Porém, também precisamos de sua ajuda e apoio.
Para isso, basta curtir nossa Fan Page e clicar no botão G+ do Google.