Sobes.tech
Junior — Middle

Vysvetlite, čo je pretypovanie v objektovo orientovaných jazykoch, pomocou príkladov UpCast a DownCast

sobes.tech AI

Odpoveď od AI

V objektovo orientovaných jazykoch, ako je C#, je prevod typu premena objektu z jedného typu na iný typ, ktorý je s ním spojený hierarchiou dedičnosti.

UpCast je prevod od odvodeného triedy na základnú triedu. Je vždy bezpečný a nevyžaduje explicitné označenie, pretože odvodená trieda obsahuje všetky členy základnej.

class Animal {}
class Dog : Animal {}

Dog dog = new Dog();
Animal animal = dog; // UpCast — nepriame prevedenie

DownCast je prevod od základnej triedy na odvodenú triedu. Môže byť nebezpečný, pretože základný objekt nemusí byť nevyhnutne inštanciou odvodené triedy. Zvyčajne vyžaduje explicitné prevedenie a kontrolu.

Animal animal = new Dog();
Dog dog = (Dog)animal; // DownCast — explicitné prevedenie

Animal anotherAnimal = new Animal();
Dog anotherDog = anotherAnimal as Dog; // Vráti null, ak prevod nie je možný

Takže, UpCast sa používa na zovšeobecnenie, zatiaľ čo DownCast na špecifikáciu typu s kontrolou bezpečnosti.