Junior — Middle
Explique o que é a conversão de tipos em linguagens orientadas a objetos, usando exemplos de UpCast e DownCast
sobes.tech IA
Resposta da IA
Em linguagens orientadas a objetos, como C#, o casting de tipos é a conversão de um objeto de um tipo para outro tipo relacionado na hierarquia de herança.
UpCast é a conversão de uma classe derivada para uma classe base. É sempre segura e não requer indicação explícita, pois a classe derivada contém todos os membros da base.
class Animal {}
class Dog : Animal {}
Dog dog = new Dog();
Animal animal = dog; // UpCast — conversão implícita
DownCast é a conversão de uma classe base para uma classe derivada. Pode ser insegura, pois o objeto base nem sempre é uma instância da classe derivada. Geralmente requer uma conversão explícita e uma verificação.
Animal animal = new Dog();
Dog dog = (Dog)animal; // DownCast — conversão explícita
Animal anotherAnimal = new Animal();
Dog anotherDog = anotherAnimal as Dog; // Retorna null se a conversão não for possível
Assim, UpCast é usado para generalização, e DownCast para especificar o tipo com verificação de segurança.