Não entendi muito bem a resolução da terceira questão prática. Alguém poderia explicar ela de maneira geral, pfvr?
Não entendi muito bem a resolução da terceira questão prática. Alguém poderia explicar ela de maneira geral, pfvr?
Oi, Enzo! Tudo bem?
A terceira questão é uma extensão da segunda, onde criamos uma classe Animal e uma classe Cachorro, em que Cachorro herda de Animal, ou seja, Cachorro terá todas as características (propriedades e métodos) de Animal, além das suas próprias.
Somado a isso, dentro do nosso Main criamos um objeto da classe Cachorro que é instanciado e atribuído a uma referência do tipo Animal, o que é possível porque Cachorro é um tipo de Animal, devido à herança.
Dessa forma, na terceira questão, devemos apenas adicionar uma verificação usando instanceof antes de realizar o casting (conversão de tipo) do objeto animal para Cachorro. O operador instanceof é usado para verificar se um objeto é de um tipo específico, verificando se o objeto é uma instância da classe especificada ou de alguma classe que herda dela. Nesse caso, verifica-se se animal é uma instância de Cachorro.
Assim, se o objeto animal for uma instância de Cachorro, o casting é realizado com segurança, convertendo animal para o tipo Cachorro. Caso o objeto animal não seja uma instância de Cachorro, uma mensagem de erro é impressa, informando que o objeto não é um cachorro.
Vamos ver o exemplo prático:
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.");
}
}
}
Em resumo, criamos um objeto Cachorro e o transformamos em um objeto Animal. Em seguida, verificamos se esse objeto Animal é realmente um Cachorro antes de tentar fazer o casting de volta para Cachorro. Se o objeto não fosse um Cachorro, o código dentro do bloco if não seria executado, evitando assim um erro de ClassCastException.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Oi, Sarah! Tudo bem siiim, e com você?
A minha maior dúvida é o porquê de o casting ter sido feito.
Você explicou que foi criado um objeto do tipo Cachorro que foi instanciado e atribuído a referência do tipo Animal.
Na estrutura condicional é verificado por meio do instanceof se o objeto animal é uma instância de Cachorro, certo? E após isso o código, nesse caso, é executado e o casting é realizado.
Só que não entendi já que, como você explicou, o objeto animal foi instanciado e atribuído a uma referência do tipo Animal, e não Cachorro.