Junior
Mida saab muuta meetodite üleküllastamisel programmeerimises?
sobes.tech AI
Vastus AI-lt
Meetodi ülekoormamine (method overloading) võib muuta:
- Parameetrite arv: meetodid sama nimega võivad omada erinevat formaalsete parameetrite arvu.
- Parameetrite tüübid: meetodid sama nime ja parameetrite arvu puhul võivad erineda nende tüüpide poolest.
- Parameetrite tüüpide järjekord: Kui meetoditel on sama parameetrite arv ja tüübid, kuid need paiknevad erinevas järjekorras, loetakse see samuti ülekoormamiseks.
Java näide:
// Klass ülekoormatavate meetoditega
class Calculator {
// Meetod kahe täisarvu liitmiseks
public int add(int a, int b) {
return a + b;
}
// Ülekoormatud meetod: kolme täisarvu liitmine
public int add(int a, int b, int c) {
return a + b + c;
}
// Ülekoormatud meetod: kahe arvu liitmine ujukomaarvuga
public double add(double a, double b) {
return a + b;
}
// Ülekoormatud meetod: täisarvu ja ujukomaarvu liitmine
public double add(int a, double b) {
return a + b;
}
// Ülekoormatud meetod: ujukomaarvu ja täisarvu liitmine
public double add(double a, int b) {
return a + b;
}
}
Mida ei tohi meetodite ülekoormamisel muuta:
- Tagastatava väärtuse tüüp: kaks meetodit sama nime ja signatuuriga (arv, tüübid ja järjekord) ei tohi erineda ainult tagastatava väärtuse tüübiga.
- Juurdepääsukommentaarid: juurdepääsukommentaarid (public, private, protected, default) ei mõjuta ülekoormamist.
static-i olemasolu või puudumine: staatilist meetodit ei saa üle koormata, kui ei ole defineeritud mitte-staatilist meetodit sama signatuuriga või vastupidi.- Väljalasetavate erandite loend: erandite loend ei kuulu meetodi signatuuri osasse, mille alusel kompilaator eristab ülekoormatavaid meetodeid.
Võrdlus ülekoormamise ja ülekirjutamise (overriding) vahel:
| Omadus | Ülekoormamine (Overloading) | Ülekirjutamine (Overriding) |
|---|---|---|
| Kus toimub | Ühes klassis või klasside hierarhias | Pärilikus klassis |
| Meetodi nimi | Sama | Sama |
| Signatuur | Erinev (arv, tüübid, järjekord) | Sama |
| Tagastatava väärtuse tüüp | Võib olla erinev (aga see ei ole ainus erinevus) | Peab olema sama või kovariantsed (objektidele) |
| Eesmärk | Pakkuda mitmeid variatsioone ühe tegevuse erinevate andmetüüpide või argumentide arvu jaoks | Muuta päriliku meetodi käitumist pärilikus klassis |
| Meetodite seos | Sõltumatud meetodid | "Olemus" seos (pärimine) |
| Polümorfism | Polümorfism kompileerimise etapil (staatiline) | Polümorfism täitmise ajal (dünaamiline) |