Sobes.tech
Junior — Middle

Kaip atskirti metodo perkrovimą nuo jo perrašymo objektinio programavimo srityje?

sobes.tech AI

Atsakymas iš AI

Metodų perkrovimas (overloading) ir metodų perrašymas (overriding) yra skirtingos sąvokos objektinio programavimo srityje:

  • Metodų perkrovimas (overloading): vienoje klasėje yra keli metodai su tuo pačiu pavadinimu, bet skirtingais parametrais (tipu, kiekiu). Tai leidžia iškviesti metodą su skirtingais argumentais.

  • Metodų perrašymas (overriding): kai pogrupis pateikia savo įgyvendinimą jau apibrėžtam metode, kuris yra pagrindinioje klasėje su ta pačia signatūra (pavadinimu ir parametrais). Tai leidžia keisti metodo elgesį pogrupyje.

Pavyzdys Java kalba:

class Animal {
    void sound() {
        System.out.println("Kai kurie garsai");
    }

    void sound(String mood) { // perkrovimas
        System.out.println("Garsas kai " + mood);
    }
}

class Dog extends Animal {
    @Override
    void sound() { // perrašymas
        System.out.println("Laižymas");
    }
}

Čia sound() Dog klasėje perrašo pagrindinės klasės metodą, o sound(String mood) yra perkrovimas to paties metodo toje pačioje klasėje Animal.