Sobes.tech
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)
Որտե՞ղ է տեղի ունենում Միևնույն դասում կամ դասերի հիերարխիայում Դուստրային դասում
Մեթոդի անուն Միևնույն Միևնույն
Մեթոդի սիգնատուրա Տարբեր (քանակ, տիպեր, հերթականություն) Միևնույն
Վերադարձվող տիպ Կարող է լինել տարբեր (բայց դա միայն տարբերություն չէ) Պետք է լինի նույն կամ կովարիանտ (օբյեկտների համար)
Նպատակը Առաջարկել տարբեր տարբերակներ մեկ գործողության համար տարբեր տվյալների տիպերի կամ արգումենտների քանակի համար Մշակել ժառանգված մեթոդի վարքագիծը ժառանգական դասում
Մեթոդների միջև կապ Անկախ մեթոդներ "Կա" կապ ( ժառանգություն)
Պոլիմորֆիզմ Պոլիմորֆիզմ կոմպիլյացիայի ժամանակ (ստատիկ) Պոլիմորֆիզմ գործարկման ժամանակ (դինամիկ)