Não entendi o exemplo do instrutor que mostra nos exercicios 2 e 3, os nomes das classes Animal e Cachorro entre parenteses ao instanciar. Peço uma orientação detalhada se possivel pois essa ação não foi feita no vídeo. Agradeço.
Não entendi o exemplo do instrutor que mostra nos exercicios 2 e 3, os nomes das classes Animal e Cachorro entre parenteses ao instanciar. Peço uma orientação detalhada se possivel pois essa ação não foi feita no vídeo. Agradeço.
Olá Ana! Tudo bem?
Vou te ajudar a entender o exemplo dos exercícios 2 e 3 que envolvem as classes Animal
e Cachorro
.
Exercício 2: Casting de Objetos
No exemplo do exercício 2, temos o seguinte código:
class Animal {
// Propriedades e métodos
}
class Cachorro extends Animal {
// Propriedades e métodos
}
public class Main {
public static void main(String[] args) {
Cachorro cachorro = new Cachorro();
Animal animal = (Animal) cachorro;
}
}
Aqui, a classe Cachorro
herda da classe Animal
. Quando você cria um objeto Cachorro
, ele também é um Animal
por herança. O que está acontecendo é um casting de objeto, que é quando você converte um objeto de uma subclasse (Cachorro
) para uma superclasse (Animal
).
No código Animal animal = (Animal) cachorro;
, você está dizendo ao compilador que o objeto cachorro
deve ser tratado como um objeto do tipo Animal
. Isso é útil quando você quer tratar um objeto de uma subclasse como se fosse da superclasse.
Exercício 3: Verificação com instanceof
No exemplo do exercício 3, o código é modificado para incluir uma verificação com instanceof
:
class Animal {
// propriedades e métodos comuns
}
class Cachorro extends Animal {
// propriedades e métodos do cachorro
}
public class Main {
public static void main(String[] args) {
Animal animal = new Cachorro();
if (animal instanceof Cachorro) {
Cachorro cachorro = (Cachorro) animal;
// Agora você pode usar o objeto 'cachorro' como um Cachorro
} else {
System.out.println("O objeto não é um Cachorro.");
}
}
}
Aqui, a verificação if (animal instanceof Cachorro)
garante que o objeto animal
é realmente uma instância de Cachorro
antes de fazer o casting. Isso evita erros em tempo de execução ao tentar converter um objeto para um tipo incompatível.
Fazendo um resumo geral sobre o que foi aplicado nos dois exercícios
Animal animal = (Animal) cachorro;
instanceof
: Verifica se um objeto é uma instância de um tipo específico antes de fazer o casting. Exemplo: if (animal instanceof Cachorro)
Espero ter ajudado e caso ainda tenho dúvidas acerca dos códigos disponibilizados, estarei à disposição para ajudá-la.
Bons estudos!
Oi Armano,
Certo amigo. Com a explicação detalhada deu pra entender melhor. É que, como no código do vídeo a instrutora não colocou assim fica um pouco complicado entender apenas olhando.E também é uma maneira mais concisa de se referenciar ao casting de um objeto. Fica mais enxuto. Muito obrigada de novo. Gratidão!