Sobes.tech
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.