Sobes.tech
Junior

Ką galima pakeisti metodų perkrovimo metu programavime?

sobes.tech AI

Atsakymas iš AI

Perkraunant metodus (method overloading) galima pakeisti:

  • Parametrų skaičius: metodai su ta pačia pavadinimu gali turėti skirtingą formalų parametrų skaičių.
  • Parametrų tipai: metodai su ta pačia pavadinimu ir skirtingu parametrų skaičiumi gali skirtis pagal parametrų tipus.
  • Parametrų tipų eiliškumas: jei metodai turi tą patį parametrų skaičių ir tipus, bet jų išsidėstymas skiriasi, tai taip pat laikoma perkrovimu.

Java pavyzdys:

// Klasė su perkrautais metodais
class Calculator {

    // Metodas sudėti du sveikus skaičius
    public int add(int a, int b) {
        return a + b;
    }

    // Perkrautas metodas: sudėti tris sveikus skaičius
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Perkrautas metodas: sudėti du skaičius su kintamąja tikslumu
    public double add(double a, double b) {
        return a + b;
    }

    // Perkrautas metodas: sudėti sveiką skaičių ir skaičių su kintamąja tikslumu
    public double add(int a, double b) {
        return a + b;
    }

    // Perkrautas metodas: sudėti skaičių su kintamąja tikslumu ir sveiką skaičių
    public double add(double a, int b) {
        return a + b;
    }
}

Ką negalima keisti perkraunant metodus:

  • Grąžinamoji reikšmė: du metodai su ta pačia pavadinimu ir ta pačia signatūra (skaičius, tipai ir tvarka) negali skirtis tik pagal grąžinamosios reikšmės tipą.
  • Prieigos modifikatoriai: prieigos modifikatoriai (public, private, protected, default) neturi įtakos perkrovimui.
  • static``-o buvimas ar nebuvimas: negalima perkrauti statinio metodo, jei nėra apibrėžto nestatinio metodo su ta pačia signatūra, arba atvirkščiai.
  • Išmetamų išimčių sąrašas: išimčių sąrašas nėra metodo signatūros dalis, pagal kurią kompiliatorius atskiria perkrautus metodus.

Palyginimas perkrovimo ir perrašymo (overriding) metodų:

Bruožas Perkrovimas (Overloading) Perrašymas (Overriding)
Kur vyksta Viename klase arba klasių hierarchijoje Paveldėtame klase
Metodo pavadinimas Tas pats Tas pats
Signatūra Skirtinga (skaičius, tipai, tvarka) Tas pats
Grąžinamoji reikšmė Gali būti skirtinga (bet tai nėra vienintelis skirtumas) Turi būti ta pati arba kovarianti (objektams)
Tikslas Pateikti keletą variantų vieno veiksmo skirtingų duomenų tipų arba argumentų skaičiaus atžvilgiu Keisti paveldėto metodo elgesį paveldėtoje klasėje
Metodų ryšys Nepriklausomi metodai "Yra" ryšys (paveldėjimas)
Polimorfizmas Kompilacijos metu polimorfizmas (statinis) Vykdymo metu polimorfizmas (dinaminis)