O que é Upcasting e Downcasting ? - em Java

2 respostas Resolvido
Anderson_L017

Gostaria de receber uma explicação contextualizada sobre upcasting e downcasting em Java. Se possível com exemplos.

2 Respostas

darlan_machado

Vale a pena pesquisar e ler no próprio fórum

staroski
Solucao aceita

Um exemplo prático, considere as duas classes abaixo:

public class TipoGenerico {}

public class TipoEspecifico extends TipoGenerico {}

Aí, em algum lugar você possui um objeto de cada uma dessas classes:

TipoGenerico   objetoGenerico   = new TipoGenerico();
TipoEspecifico objetoEspecifico = new TipoEspecifico();

E el agum método você quer referenciar estes objetos em outras variáveis:

// upcasting, acontece implicitamente, pois o compilador sabe que objetos do TipoEspecifico estendem a classe TipoGenerico
TipoGenerico   variavelGenerica   = objetoEspecifico;

// downcasting, necessita de cast explícito, pois o compilador não tem como saber se o objeto referenciado pela variável genérica é um objeto específico ou não
// E também  é possível se de fato a variavelGenerica possui uma referência à um objeto do TipoEspecifico
// se a variavelGenerica possuísse uma referência à um objeto do TipoGenerico, ocorreria ClassCastException em tempo de execução
TipoEspecifico variavelEspecifica = (TipoEspecifico) variavelGenerica;
Criado 25 de abril de 2019
Ultima resposta 25 de abr. de 2019
Respostas 2
Participantes 3