Негизги айырмасы – C тилинде жокко чыгаруу жана ашыкча жүктөө
С тилинде жокко чыгаруу менен ашыкча жүктөөнүн ортосундагы негизги айырма, жокко чыгарылган ыкманын чалуусунун анын аныктамасына туташтырылуусу аткаруу убагында, ал эми ашыкча жүктөлгөн ыкманын чалуусунун анын аныктамасына байланышы компиляция убагында болот.
C - Microsoft тарабынан иштелип чыккан жалпы максаттагы программалоо тили. C тилинин негизги артыкчылыгы объектке багытталган программалоону (OOP) колдогондугунда. OOP бир мамы полиморфизм болуп саналат. Бул бир нече жүрүм-турумга ээ объект берет. Полиморфизмде жокко чыгаруу жана ашыкча жүктөө деп аталган эки түрү бар. Бул макалада C тилиндеги ыкманы жокко чыгаруу жана ашыкча жүктөө ортосундагы айырма талкууланат.
C тилинде Overriding деген эмне?
OOPдо дагы бир маанилүү түшүнүк бар - мурас. Бул мурунтан эле бар класстын атрибуттарын жана ыкмаларын колдонуу. Бул кодду кайра колдонуу мүмкүнчүлүгүн жакшыртат. Буга чейин бар класс базалык класс, ал эми жаңы класс туунду класс катары белгилүү. Полиморфизмди жокко чыгарууда базалык класс жана туунду класс болушу керек. Өчүрүлгөн ыкманын чалуусунун аныктамага байланышы иштөө убагында болот. Мисал төмөнкүдөй.
01-сүрөт: Өчүрүлгөн C программасы
Жогорудагы программага ылайык, Shape классы негизги класс болуп саналат жана ал дисплей ыкмасын камтыйт. Класс Rectangle жана Triangle туунду класстар. Бул туунду класстар да өздөрүнүн ишке ашыруулары менен бирдей ыкманы көрсөтөт.
Биринчиден, obj шилтеме өзгөрмө түзүлөт. Ал Shape объектисин көрсөтөт. Ошентип, Shape классынын дисплей ыкмасы аткарылат. Андан кийин, шилтеме өзгөрмө Rectangle объектисин көрсөтөт. Ошентип, Rectangle классынын дисплей ыкмасы аткарылат. Акырында, шилтеме өзгөрмө Triangle объектисин көрсөтөт. Ошентип, Triangle классынын дисплей ыкмасы аткарылат. Негизги класстын дисплей ыкмасы туунду класстардын дисплей ыкмалары менен жокко чыгарылат.
Чуркоо ыкмасы аткаруу убагында чечилет. Shape классы "виртуалдык" ачкыч сөзү менен жазылган. Rectangle жана Triangle класстары "override" ачкыч сөзү менен жазылган. Эгер бул ачкыч сөздөр колдонулбаса, чыгаруу Shape классынын дисплей ыкмасынын мазмунун бардыгы үчүн басып чыгарат.
Cде ашыкча жүктөө деген эмне?
Ашыкча жүктөөдө бир нече ыкманын аталышы бирдей, бирок параметрлери башка. Параметрлер ар кандай болушу мүмкүн. Методдор да ар кандай сандагы параметрлерге ээ болушу мүмкүн. Методду ашыкча жүктөө ошол эле класста болот. Ашыкча жүктөлгөн ыкмаларды аныктоого байланыштыруу компиляция убагында болот. Төмөнкү C программасын караңыз.
02-сүрөт: Ашыкча жүктөө менен C программасы
Жогорудагы программага ылайык, А классында сумма деп аталган бирдей аталыштагы эки ыкма бар. Алар параметрлердин ар кандай түрлөрү бар. Негизги программада А объектиси түзүлөт. Сумма (2, 3) бүтүн сандар менен сумма ыкмасын чакырат. Сумма (5.1, 7.94) кош маанилер менен сумма ыкмасын чакырат. Эки ыкманын тең аталышы жана параметрлеринин саны бирдей. Бирок параметр түрлөрү ар кандай. Керектүү ыкма ошого жараша чакырылат. Ашыкча жүктөө метод аттары жана параметр түрлөрү бирдей болсо, бирок параметрлердин саны ар башка болсо да пайда болушу мүмкүн.
C тилиндеги ашыкча жүктөө менен ашыкча жүктөөнүн кандай окшоштугу бар?
C тилиндеги Overriding жана Overloading экөө тең полиморфизмдин түрлөрү
C тилиндеги ашыкча жүктөө менен ашыкча жүктөөнүн ортосунда кандай айырма бар?
C'та ашыкча жүктөө жана ашыкча жүктөө |
|
C тилинде жокко чыгаруу – бул базалык класста мурунтан эле бар метод үчүн туунду класс методунда белгилүү бир ишке ашырууну камсыз кылуу. | C'та ашыкча жүктөө - бул ар кандай ишке ашыруулар менен бир аталыштагы бир нече ыкмаларды түзүү. |
Параметрлер | |
C Overriding'де методдор бирдей аталышка, бирдей параметр типтерине жана бирдей сандагы параметрлерге ээ. | C Ашыкча жүктөөдө методдор бир эле аталышка ээ, бирок параметрлердин саны башка же башка типтеги параметрлер бар. |
Учурлук | |
C тилинде жокко чыгаруу негизги класстын жана туунду класстын ичинде болот. | C тилинде ашыкча жүктөө бир класста болот. |
Байланыш убактысы | |
Өчүрүлгөн ыкманын чалуусунун анын аныктамасына байланышы иштөө убагында болот. | Ашыкча жүктөлгөн ыкма чалуусунун анын аныктамасы менен байланышуусу компиляция убагында ишке ашат. |
Синонимдер | |
Өткөрүлүүчү иштөө убактысынын полиморфизми, динамикалык полиморфизми же кеч байланышы деп аталат. | Ашыкча жүктөө компиляция убактысынын полиморфизми, статикалык полиморфизми же эрте байланышуу деп аталат. |
Корытынды – C тилинде жокко чыгаруу жана ашыкча жүктөө
Өткөрүп коюу жана ашыкча жүктөө полиморфизмдин эки түрү. C тилинде жокко чыгаруу менен ашыкча жүктөөнүн ортосундагы айырмачылык, жокко чыгарылган ыкманын чалуусунун анын аныктамасына туташуусу аткаруу убагында, ал эми ашыкча жүктөлгөн ыкманын чалуусунун анын аныктамасына байланышы компиляция убагында болот.