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) { }
    

Аз ин рӯ, омилҳои асосӣ барои ивазкунӣ ягонагии сигнатураи метод аст, ки онро номи он ва маҷмӯи (намунаҳо ва тартиб) параметрҳо муайян мекунанд.