Enviar um café pro programador

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

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ÉÉÉ");
    }
}

4 comentários:

Tiago disse...

Muito bom. Parabéns!

Carlos disse...

Aprendi a sintaxe aqui, obrigado!

Anônimo disse...

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

Anônimo disse...

Muito bem alaborado para entendermos herânça e outras coisas inclusive instance off... parabéns e muito obrigadi

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