Негізгі айырмашылық – C тіліндегі қайта анықтау және шамадан тыс жүктеу
C тіліндегі қайта анықтау мен шамадан тыс жүктеу арасындағы негізгі айырмашылық мынада: қайта анықталған әдіс шақыруын оның анықтамасына байланыстыру орындалу уақытында, ал шамадан тыс жүктелген әдіс шақыруын оның анықтамасына байланыстыру компиляция уақытында болады.
C - Microsoft әзірлеген жалпы мақсаттағы бағдарламалау тілі. C тілінің басты артықшылығы - ол объектіге бағытталған бағдарламалауды (OOP) қолдайды. OOP бір тірегі - полиморфизм. Ол нысанға бірнеше мінез-құлық береді. Полиморфизмде қайта анықтау және шамадан тыс жүктеу деп аталатын екі түрі бар. Бұл мақалада C тіліндегі әдісті қайта анықтау және шамадан тыс жүктеу арасындағы айырмашылық талқыланады.
C тілінде қайта анықтау дегеніміз не?
OOP-те тағы бір маңызды ұғым бар - мұрагерлік. Бұл бұрыннан бар класстың атрибуттары мен әдістерін пайдалану. Бұл кодты қайта пайдалану мүмкіндігін жақсартады. Бұрыннан бар класс негізгі класс, ал жаңа класс туынды класс ретінде белгілі. Полиморфизмді жою кезінде негізгі класс және туынды класс болуы керек. Анықтамаға қайта анықталған әдіс шақыруын байланыстыру орындалу уақытында орын алады. Мысал келесідей.
01-сурет: қайта анықтауы бар C бағдарламасы
Жоғарыдағы бағдарламаға сәйкес Shape сыныбы негізгі класс болып табылады және ол көрсету әдісін қамтиды. Rectangle және Triangle класы туынды кластар болып табылады. Бұл туынды сыныптар да өздерінің іске асыруларымен бірдей әдісті көрсетеді.
Біріншіден, obj анықтамалық айнымалысы жасалады. Ол Shape нысанына нұсқайды. Сонымен, Shape класының көрсету әдісі орындалады. Содан кейін сілтеме айнымалысы Rectangle нысанына нұсқайды. Сонымен, Rectangle класының көрсету әдісі орындалады. Соңында, анықтамалық айнымалы үшбұрыш нысанын көрсетеді. Сонымен, Triangle класының көрсету әдісі орындалады. Негізгі сыныпты көрсету әдісі туынды сыныптардың көрсету әдістерімен қайта анықталған.
Іске қосу әдісі орындалу уақытында анықталады. Shape класы «виртуалды» кілт сөзімен жазылған. Rectangle және Triangle кластары «override» кілт сөзімен жазылады. Бұл кілт сөздер пайдаланылмаса, шығыс барлығы үшін Shape сыныбының көрсету әдісінің мазмұнын басып шығарады.
C тілінде шамадан тыс жүктеу дегеніміз не?
Жүктеу кезінде бірнеше әдістердің аты бірдей, бірақ параметрлері әртүрлі. Параметрлер әртүрлі болуы мүмкін. Сондай-ақ әдістерде әртүрлі параметрлер саны болуы мүмкін. Әдістің шамадан тыс жүктелуі бір сыныпта орын алады. Анықтамаға шамадан тыс жүктелген әдістерді байланыстыру компиляция уақытында орын алады. Төмендегі C бағдарламасын қараңыз.
02-сурет: шамадан тыс жүктелетін C бағдарламасы
Жоғарыдағы бағдарламаға сәйкес, А класында қосынды деп аталатын аттас екі әдіс бар. Олардың әртүрлі параметрлері бар. Негізгі программада А объектісі құрылады. Қосынды (2, 3) бүтін сандармен қосынды әдісін шақырады. Қосынды (5.1, 7.94) қос мәндері бар қосынды әдісін шақырады. Екі әдістің де аты бірдей және параметрлер саны бірдей. Бірақ параметр түрлері әртүрлі. Қажетті әдіс сәйкесінше шақырылады. Әдіс атаулары мен параметр түрлері бірдей, бірақ параметрлер саны әртүрлі болса, шамадан тыс жүктелу орын алуы мүмкін.
C тіліндегі қайта анықтау мен шамадан тыс жүктеудің қандай ұқсастығы бар?
C тіліндегі қайта анықтау және шамадан тыс жүктеу екеуі де полиморфизмнің түрлері болып табылады
C тіліндегі қайта анықтау мен шамадан тыс жүктеудің айырмашылығы неде?
C тіліндегі қайта анықтау және шамадан тыс жүктеу |
|
C тілінде қайта анықтау негізгі сыныпта бұрыннан бар әдіс үшін туынды сынып әдісінде нақты іске асыруды қамтамасыз ету болып табылады. | C тілінде шамадан тыс жүктелу - бұл әртүрлі іске асырулары бар бір атаумен бірнеше әдістерді жасау. |
Параметрлер | |
C қайта анықтауда әдістердің аты бірдей, параметр түрлері бірдей және параметрлер саны бірдей. | C шамадан тыс жүктелуде әдістердің аты бірдей, бірақ параметрлер саны басқа немесе параметрлердің басқа түрі болады. |
Болған оқиға | |
C тілінде қайта анықтау негізгі және туынды сынып ішінде орын алады. | C тілінде шамадан тыс жүктеу бір сыныпта орын алады. |
Байланыс уақыты | |
Қайта анықталған әдіс шақыруын оның анықтамасына байланыстыру орындалу уақытында орындалады. | Шамадан тыс жүктелген әдіс шақыруының оның анықтамасына қосылуы компиляция уақытында орын алады. |
Синонимдер | |
Басқа анықтау орындалу полиморфизмі, динамикалық полиморфизм немесе кеш байланыстыру деп аталады. | Артық жүктелу компиляция уақытының полиморфизмі, статикалық полиморфизмі немесе ерте байланыстыру деп аталады. |
Қорытынды – C тіліндегі қайта анықтау және шамадан тыс жүктеу
Өшіру және шамадан тыс жүктеу - полиморфизмнің екі түрі. C тіліндегі қайта анықтау мен шамадан тыс жүктеудің айырмашылығы мынада: қайта анықталған әдіс шақыруының оның анықтамасына қосылуы орындалу уақытында, ал шамадан тыс жүктелген әдіс шақыруының оның анықтамасына байланыстыруы компиляция уақытында болады.