Yükləmə və Həddindən artıq yükləmə
Metodu Üstündən təyinetmə və Həddindən artıq yükləmə metodu bəzi proqramlaşdırma dillərində tapılan iki anlayış/texnika/xüsusiyyətdir. Hər iki konsepsiya proqramçıya eyni adlı metodlar üçün müxtəlif tətbiqlər təqdim etməyə imkan verir. Metodun üstünlüyü proqramçıya öz super sinfində artıq müəyyən edilmiş metoda alt sinif daxilində alternativ həyata keçirməyə imkan verir. Metodun həddən artıq yüklənməsi proqramçıya eyni adlı (eyni sinif daxilində) bir neçə metoda müxtəlif tətbiqlər təqdim etməyə imkan verir.
Qeyd etmək nədir?
Yuxarıda qeyd edildiyi kimi, sinif obyekt yönümlü proqramlaşdırma dillərində super sinif və ya ana sinfi genişləndirə bilər. Uşaq sinifin öz metodları ola bilər və ya isteğe bağlı olaraq onun ana sinifində (və ya onun böyük valideyn siniflərindən birində) müəyyən edilmiş metodlara öz tətbiqetmələri ola bilər. Beləliklə, sonuncu baş verdikdə, buna metodun üstünlüyü deyilir. Başqa sözlə, əgər uşaq sinif öz ana siniflərindən birində artıq müəyyən edilmiş metod kimi eyni imza və qaytarma növü ilə metodun icrasını təmin edirsə, bu metod uşaq sinifinin həyata keçirilməsi ilə ləğv edilir (əvəz edilir). Beləliklə, əgər sinifdə ləğv edilmiş metod varsa, icra zamanı sistemi hansı metodun həyata keçirilməsinə qərar verməli olacaq. Bu problem onu çağırmaq üçün istifadə olunan obyektin dəqiq növünə baxmaqla həll edilir. Əgər əsas sinifin obyekti ləğv edilmiş metodu çağırmaq üçün istifadə olunursa, o zaman ana sinifdəki həyata keçirmə istifadə olunur. Eynilə, əgər o, uşaq sinifinin obyekti istifadə olunursa, o zaman uşaq sinifin həyata keçirilməsindən istifadə olunur. Java, Eifell, C++ və Python kimi müasir proqramlaşdırma dilləri metodu ləğv etməyə imkan verir.
Həddindən artıq yükləmə nədir?
Metodun həddən artıq yüklənməsi bəzi proqramlaşdırma dilləri tərəfindən eyni adlı, lakin müxtəlif giriş və çıxış növləri ilə birdən çox metod yaratmaq üçün təmin edilən xüsusiyyətdir. Java, C, C++ və VB. NET kimi müasir proqramlaşdırma dillərində bu xüsusiyyət mövcuddur. Eyni ada malik, lakin fərqli metod imzası və ya fərqli qaytarma növü (və ya hər ikisi) ilə başqa bir metod yaratmaqla metodu həddən artıq yükləyə bilərsiniz. Məsələn, eyni sinif daxilində metod1(tip1 t1) və metod1(tip2 t2) varsa, o zaman onlar həddən artıq yüklənmişdir. Sonra sistem çağırıldıqda hansının icra olunacağına qərar verməli olacaq. Bu diferensiasiya metoda ötürülən parametr(lər)in növünə baxmaqla həyata keçirilir. Əgər arqument 1-ci tipdədirsə, onda birinci həyata keçirmə çağırılır, əgər o, tip2-dirsə, ikinci tətbiq çağırılır.
Yükləmə və Həddindən artıq yükləmə arasında fərq nədir?
Baxmayaraq ki, metodun üstünlüyü və metodun həddən artıq yüklənməsi metodu müxtəlif tətbiqlərlə təmin etmək üçün istifadə olunsa da, bu iki anlayış/texnika arasında əsas fərqlər var. Əvvəla, metodun üstünlük təşkil edən subyektləri həmişə müxtəlif siniflərdə qalır, metodun həddindən artıq yüklənməsi subyektləri isə eyni sinifdə qalır. Bu o deməkdir ki, overriding yalnız miras almağa imkan verən obyekt yönümlü proqramlaşdırma dillərində mümkündür, həddindən artıq yükləmə isə obyekt yönümlü olmayan dildə də mövcud ola bilər. Başqa sözlə, siz super sinifdə metodu ləğv edirsiniz, lakin öz sinfinizdə olan metodu həddən artıq yükləyirsiniz.
Digər fərq ondan ibarətdir ki, ləğv edilmiş metodlar eyni metod adına, metod imzasına və qaytarma növünə malikdir, lakin həddən artıq yüklənmiş metodlar ya imzada, ya da qaytarma növündə fərqlənməlidir (ad eyni olmalıdır). Üstündən təyin edilmiş iki metodu fərqləndirmək üçün istifadə edilən id metodlarını çağırmaq üçün istifadə olunan obyektin dəqiq növü, iki həddindən artıq yüklənmiş metod arasında fərqləndirmək üçün isə parametrlərin növləri istifadə olunur. Digər əsas fərq ondan ibarətdir ki, həddən artıq yüklənmə kompilyasiya zamanı, ləğvetmə isə icra zamanı həll edilir.