Հիմնական տարբերություն – Գերբեռնում ընդդեմ գերբեռնման C-ում
C-ում գերագնահատման և գերբեռնման հիմնական տարբերությունն այն է, որ գերբեռնված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում գործարկման ժամանակ, մինչդեռ գերբեռնված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում կոմպիլյացիայի ժամանակ:
C-ը ընդհանուր նշանակության ծրագրավորման լեզու է, որը մշակվել է Microsoft-ի կողմից: C-ի հիմնական առավելությունն այն է, որ այն աջակցում է Object Oriented Programming (OOP): OOP-ի մեկ սյունը պոլիմորֆիզմն է: Այն օբյեկտին տալիս է մի քանի վարքագիծ: Պոլիմորֆիզմի մեջ կա երկու տեսակ, որը հայտնի է որպես գերակայող և գերբեռնված: Այս հոդվածը քննարկում է C-ում մեթոդի գերակայության և գերբեռնման միջև եղած տարբերությունը:
Ի՞նչ է գերակայում C-ում:
Կա մեկ այլ կարևոր հասկացություն OOP-ում ժառանգությունը: Դա արդեն գոյություն ունեցող դասի ատրիբուտներն ու մեթոդներն օգտագործելն է: Այն բարելավում է կոդի կրկնակի օգտագործման հնարավորությունը: Արդեն գոյություն ունեցող դասը բազային դասն է, իսկ նոր դասը հայտնի է որպես ստացված դաս։ Պոլիմորֆիզմի գերակայության դեպքում պետք է լինի բազային դաս և ածանցյալ դաս: Վերականգնված մեթոդի կանչի միացումը սահմանմանը տեղի է ունենում գործարկման ժամանակ: Օրինակը հետևյալն է.
Նկար 01. C ծրագիր գերակայող
Ըստ վերը նշված ծրագրի՝ Shape դասը բազային դաս է, և այն պարունակում է ցուցադրման մեթոդը։ Rectangle և Triangle դասերը ստացված դասեր են: Այս ածանցյալ դասերը նույնպես ունեն նույն մեթոդի ցուցադրումը իրենց սեփական իրականացումներով:
Նախ, ստեղծվում է հղման obj փոփոխականը: Այն ցույց է տալիս Shape օբյեկտը: Այսպիսով, Shape դասի ցուցադրման մեթոդը կկատարվի: Այնուհետև հղման փոփոխականը ցույց է տալիս ուղղանկյուն օբյեկտը: Այսպիսով, Rectangle դասի ցուցադրման մեթոդը կկատարվի: Վերջապես, հղման փոփոխականը ցույց է տալիս Triangle օբյեկտը: Այսպիսով, Triangle դասի ցուցադրման մեթոդը կկատարվի: Հիմնական դասի ցուցադրման մեթոդը փոխարինվում է ստացված դասերի ցուցադրման մեթոդներով:
Գործարկման մեթոդը որոշվում է գործարկման ժամանակ: Shape դասը գրված է «վիրտուալ» բանալի բառով: Rectangle և Triangle դասերը գրված են «override» հիմնաբառով: Եթե այս հիմնաբառերը չօգտագործվեն, ելքը կտպագրի Shape դասի ցուցադրման մեթոդի բովանդակությունը բոլորի համար:
Ի՞նչ է գերբեռնումը C-ում:
Գերբեռնման ժամանակ մի քանի մեթոդներ ունեն նույն անունը, բայց տարբեր պարամետրերով: Պարամետրերը կարող են լինել տարբեր տեսակի. Մեթոդները կարող են ունենալ նաև տարբեր քանակի պարամետրեր:Մեթոդների գերբեռնվածությունը տեղի է ունենում նույն դասում: Ծանրաբեռնված մեթոդների միացումը սահմանմանը տեղի է ունենում կոմպիլյացիայի ժամանակ: Տե՛ս ստորև բերված C ծրագիրը:
Նկար 02. C ծրագիր գերբեռնվածությամբ
Ըստ վերոնշյալ ծրագրի՝ A դասը ունի նույն անունով երկու մեթոդ, որը կոչվում է գումար: Նրանք ունեն տարբեր տեսակի պարամետրեր: Հիմնական ծրագրում ստեղծվում է Ա-ի օբյեկտ։ Գումարը (2, 3) կկանչի գումարի մեթոդը ամբողջ թվերով: Գումարը (5.1, 7.94) կկանչի գումարի մեթոդը կրկնակի արժեքներով: Երկու մեթոդներն էլ ունեն նույն անվանումը և նույն թվով պարամետրերը: Բայց պարամետրերի տեսակները տարբեր են: Պահանջվող մեթոդը կոչվում է համապատասխանաբար: Գերբեռնում կարող է առաջանալ նաև, եթե մեթոդների անվանումները և պարամետրերի տեսակները նույնն են, բայց պարամետրերի քանակը տարբեր է:
Ո՞րն է նմանությունը C-ում գերագնահատման և գերբեռնման միջև:
Եվ Overriding-ը և Overloading-ը C-ում պոլիմորֆիզմի տեսակներ են:
Ո՞րն է տարբերությունը C-ում վերագրանցման և գերբեռնման միջև:
Գերբեռնում ընդդեմ գերբեռնման C-ում |
|
Գերակայումը C-ում նշանակում է ածանցյալ դասի մեթոդով հատուկ իրականացում ապահովել բազային դասում արդեն գոյություն ունեցող մեթոդի համար: | C-ում գերբեռնումը նշանակում է ստեղծել մի քանի մեթոդներ նույն անունով տարբեր իրականացումներով: |
Պարամետրեր | |
C Overriding-ում մեթոդներն ունեն նույն անունը, նույն պարամետրերի տեսակները և նույն թվով պարամետրերը: | C գերբեռնման ժամանակ մեթոդներն ունեն նույն անունը, բայց տարբեր թվով պարամետրեր կամ տարբեր տեսակի պարամետրեր: |
Առաջադրում | |
C-ում գերակայումը տեղի է ունենում բազային դասի և ստացված դասի ներսում: | C-ում գերբեռնումը տեղի է ունենում նույն դասում: |
Պարտադիր ժամանակ | |
Գերակայված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում գործարկման ժամանակ: | Գերբեռնված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում կոմպիլյացիայի ժամանակ: |
Հոմանիշներ | |
Գերակայությունը կոչվում է որպես գործարկման ժամանակի պոլիմորֆիզմ, դինամիկ պոլիմորֆիզմ կամ ուշ կապում: | Գերբեռնումը կոչվում է կոմպիլյացիայի ժամանակի պոլիմորֆիզմ, ստատիկ պոլիմորֆիզմ կամ վաղ կապում: |
Ամփոփում – Overriding vs Overloading C-ում
Գերբեռնումը և գերբեռնումը պոլիմորֆիզմի երկու տեսակ են: C-ում գերագնահատման և գերբեռնման միջև տարբերությունն այն է, որ գերբեռնված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում գործարկման ժամանակ, մինչդեռ գերբեռնված մեթոդի կանչի կապումը դրա սահմանմանը տեղի է ունենում կոմպիլյացիայի ժամանակ: