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 барои муайян кардани намуд бо санҷиши бехатарӣ.