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.