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

Ошентип, жүктөө үчүн негизги фактор — метод сигнатурасынын уникалдуулугу, ал анын аты жана параметрлердин (типтери жана тартиби) топтомунан аныкталат.