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сөзүнүн болушу же болбошу: Статикалык метод жүктөлбөйт, эгер ал бир эле сигнатура менен статикалык эмес метод менен аныкталса, же тескерисинче.- Чыгуу тизмеси: Чыгуу тизмеси методтун сигнатурасынын бир бөлүгү эмес жана жүктөөдө эске алынбайт.
Жүктөө жана кайра жазуу салыштыруу:
| Өзгөчөлүк | Жүктөө (Overloading) | Кайта жазуу (Overriding) |
|---|---|---|
| Кайда болот | Бир класста же класстар хиерархиясында | Төмендеги класста |
| Метод аталышы | Бирдей | Бирдей |
| Метод сигнатурасы | Ар түрдүү (саны, түрлөрү, тартиби) | Бирдей |
| Кайтаруучу түрү | Мүмкүн түрлөрү менен айырмаланат (бирок жалгыз айырма эмес) | Бирдей же ковариант (объекттер үчүн) |
| Максаты | Бир иштин ар түрдүү варианттарын берүү үчүн, ар түрдүү маалымат түрлөрү же аргументтердин саны үчүн | Туураланган методдун жүрүм-турумун өзгөртүү |
| Методтордун ортосундагы байланыш | Өз алдынча методдор | "бар" байланыш (мурас алуу) |
| Полиморфизм | Компиляция этабында полиморфизм (статикалык) | Ишке ашыруучу этапта полиморфизм (динамикалык) |