Sobes.tech
Junior — Middle

Izskaidrojiet, kas ir tipu pārvēršana objektorientētajās valodās, izmantojot piemērus UpCast un DownCast

sobes.tech AI

Atbilde no AI

Objektorientētajās valodās, piemēram, C#, tipu pārveidošana ir objekta pārvēršana no viena tipa uz citu tipu, kas ir saistīts ar to caur mantošanas hierarhiju.

UpCast ir pārvēršana no atvasinātas klases uz bāzes klasi. Tā vienmēr ir droša un neprasa skaidru norādi, jo atvasinātā klase satur visas bāzes klases locekļus.

class Animal {}
class Dog : Animal {}

Dog dog = new Dog();
Animal animal = dog; // UpCast — netieša pārvēršana

DownCast ir pārvēršana no bāzes klases uz atvasinātu klasi. Tā var būt nedroša, jo bāzes objekts nav obligāti atvasinātas klases instances. Parasti prasa skaidru pārvēršanu un pārbaudi.

Animal animal = new Dog();
Dog dog = (Dog)animal; // DownCast — skaidra pārvēršana

Animal anotherAnimal = new Animal();
Dog anotherDog = anotherAnimal as Dog; // Atgriezīs null, ja pārvēršana nav iespējama

Tādējādi, UpCast tiek izmantots vispārīguma nodrošināšanai, bet DownCast — tipa precizēšanai ar drošības pārbaudi.