Sobes.tech
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)