Junior
Ինչ կարելի է փոխել մեթոդների ավելցուկային բեռնման ժամանակ ծրագրավորման մեջ:
sobes.tech AI
Պատասխան AI-ից
Երբ մեթոդների ավելցուկային բեռնվածություն (method overloading) տեղի է ունենում, հնարավոր է փոփոխել.
- Պարամետրերի քանակը: Միևնույն անունով մեթոդները կարող են ունենալ տարբեր ձևական պարամետրերի քանակ:
- Պարամետրերի տեսակները: Միևնույն անունով և նույն քանակությամբ պարամետրերով մեթոդները կարող են տարբեր լինել այդ պարամետրերի տեսակներով:
- Պարամետրերի տեսակների հերթականությունը: Եթե մեթոդների պարամետրերի քանակն ու տեսակները նույնն են, բայց դրանք տարբեր հերթականությամբ են, դա նույնպես համարվում է ավելցուկային բեռնվածություն:
Java-ի օրինակ:
// Մեթոդների ավելցուկային բեռնվածությամբ դաս
class Calculator {
// Երկու ամբողջ թվերի գումար
public int add(int a, int b) {
return a + b;
}
// Ավելցուկային մեթոդ՝ երեք ամբողջ թվերի գումար
public int add(int a, int b, int c) {
return a + b + c;
}
// Ավելցուկային մեթոդ՝ երկու տասնորդական թվերի գումար
public double add(double a, double b) {
return a + b;
}
// Ավելցուկային մեթոդ՝ ամբողջ թիվ և տասնորդական թիվ
public double add(int a, double b) {
return a + b;
}
// Ավելցուկային մեթոդ՝ տասնորդական և ամբողջ թիվ
public double add(double a, int b) {
return a + b;
}
}
Ինչը չի կարելի փոխել ավելցուկային բեռնվածության դեպքում:
- Վերադարձվող տիպը: Երկու մեթոդներ, որոնք ունեն նույն անունը և նույն սիգնատուրան (քանակը, տիպերը և հերթականությունը), չեն կարող տարբեր լինել միայն վերադարձվող տիպով:
- Մուտքի մոդիֆիկատորներ: Մոդիֆիկատորները (public, private, protected, default) չեն ազդում ավելցուկային բեռնվածության վրա:
static-ի առկայությունը կամ բացակայությունը: Static մեթոդը չի կարող ավելցուկային լինել, եթե նույն սիգնատուրայով սահմանված է ոչ-static մեթոդ կամ հակառակը:- Ազատության ցանկը: Ազատության ցանկը մաս չի կազմում մեթոդի սիգնատուրայի և չի հաշվի առնվում ավելցուկային բեռնվածության ժամանակ:
Ավելցուկային բեռնվածություն և վերագրում (overriding) համեմատություն:
| Գծանիշ | Ավելցուկային բեռնվածություն (Overloading) | Վերագրում (Overriding) |
|---|---|---|
| Որտե՞ղ է տեղի ունենում | Միևնույն դասում կամ դասերի հիերարխիայում | Դուստրային դասում |
| Մեթոդի անուն | Միևնույն | Միևնույն |
| Մեթոդի սիգնատուրա | Տարբեր (քանակ, տիպեր, հերթականություն) | Միևնույն |
| Վերադարձվող տիպ | Կարող է լինել տարբեր (բայց դա միայն տարբերություն չէ) | Պետք է լինի նույն կամ կովարիանտ (օբյեկտների համար) |
| Նպատակը | Առաջարկել տարբեր տարբերակներ մեկ գործողության համար տարբեր տվյալների տիպերի կամ արգումենտների քանակի համար | Մշակել ժառանգված մեթոդի վարքագիծը ժառանգական դասում |
| Մեթոդների միջև կապ | Անկախ մեթոդներ | "Կա" կապ ( ժառանգություն) |
| Պոլիմորֆիզմ | Պոլիմորֆիզմ կոմպիլյացիայի ժամանակ (ստատիկ) | Պոլիմորֆիզմ գործարկման ժամանակ (դինամիկ) |