Sobes.tech
Middle

Խոսեք մեթոդների ավելցուկային կանոնների մասին։

sobes.tech AI

Պատասխան AI-ից

Մեթոդների բեռնաթափում (Method Overloading) օբյեկտ-կենտրոնացված ծրագրավորման մեջ թույլ է տալիս մի քանի մեթոդներ նույն դասում նույն անունով, բայց տարբեր սիգնատուրներով սահմանել:

Մեթոդների բեռնաթափման հիմնական կանոնները՝

  1. Սիգնատուրների տարբերություն: Մեթոդի սիգնատուրն ընդգրկում է մեթոդի անունը և նրա պարամետրերի տիպերի ցանկը համապատասխան կարգով: Որպես բեռնաթափված մեթոդներ դիտվելու համար, նրանց սիգնատուրները պետք է տարբեր լինեն:

    // Տարբեր սիգնատուրների օրինակներ
    void print(int i) { }
    void print(String s) { }
    void print(int i, String s) { }
    void print(String s, int i) { } // Պարամետրերի կարգը տարբեր է
    
  2. Մեթոդի անունը պետք է նույն լինի: Բեռնաթափված մեթոդները պետք է ունենան նույն անունը:

    // Ճիշտ օրինակ բեռնաթափման համար
    class Example {
        void process(int a) { }
        void process(double b) { }
    }
    
  3. Վերադարձվող արժեքի տիպը սիգնատուրի մաս չէ: Միայն վերադառնալու արժեքի տիպի փոփոխությունը չի դարձնում մեթոդները բեռնաթափված: Կոմպիլյատորը չի կարող տարբերել, թե որ մեթոդը կանչել, եթե պարամետրերի սիգնատուրները նույնն են:

    // Չի հանդիսանում բեռնաթափում - սխալ կոմպիլյացիայում
    int calculate() { return 1; }
    String calculate() { return "error"; }
    
  4. Մուտքի մոդիֆիկատորները և արտահայտությունների հատուկ նշումները չեն ազդում բեռնաթափման վրա: Դրանց փոփոխությունը միայն վերադառնալու արժեքի տիպի նման, կամ մոդիֆիկատորների փոփոխությունը (public, private, protected, default) կամ արտահայտությունների ցանկը (throws) չի հանգեցնում բեռնաթափման:

    // Չի հանդիսանում բեռնաթափում - սխալ կոմպիլյացիայում, եթե պարամետրերի սիգնատուրները նույնն են
    public void doSomething() { }
    private void doSomething() { }
    
  5. Պարամետրերի կարգը կարևոր է: Պարամետրերի տիպերի կարգի փոփոխությունը տարբեր սիգնատուրներ է դարձնում:

    // Բեռնաթափում է
    void setup(int width, int height) { }
    void setup(int height, String unit) { } // Երկրորդ պարամետրը տարբեր է
    void setup(String unit, int size) { } // Տիպի և կարգի փոփոխություն
    
  6. Պարամետրերի քանակը կարևոր է: Տարբեր պարամետրերի քանակը տարբեր սիգնատուրներ է դարձնում:

    // Բեռնաթափում է
    void log(String message) { }
    void log(String message, int level) { }
    

Այսպիսով, բեռնաթափման հիմնական գործոնը մեթոդի սիգնատուրայի յուրահատուկությունն է, որը սահմանվում է նրա անունով և պարամետրերի (տիպերով և կարգով) հավաքածուով։