Junior — Middle
Обяснете какво е преобразуване на типове в обектно-ориентираните езици, използвайки примери за UpCast и DownCast
sobes.tech AI
Отговор от AI
В обектно-ориентираните езици, като C#, преобразуването на тип е преобразуването на обект от един тип в друг, свързан с него чрез йерархията на наследяване.
UpCast е преобразуване от производен клас към базов. То винаги е безопасно и не изисква явна индикация, тъй като производният клас съдържа всички членове на базовия.
class Animal {}
class Dog : Animal {}
Dog dog = new Dog();
Animal animal = dog; // UpCast — неявно преобразуване
DownCast е преобразуване от базов клас към производен. То може да бъде опасно, тъй като базовият обект не е задължително да е екземпляр на производния клас. Обикновено изисква явна преобразуване и проверка.
Animal animal = new Dog();
Dog dog = (Dog)animal; // DownCast — явна преобразуване
Animal anotherAnimal = new Animal();
Dog anotherDog = anotherAnimal as Dog; // Връща null, ако преобразуването е невъзможно
Така, UpCast се използва за обобщаване, а DownCast — за уточняване на типа с проверка за безопасност.