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``-obuvimas 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) |