Papaskink apie metodų perkrovimo taisykles.
sobes.tech AI
Atsakymas iš AI
Metodų perkrovimas (Method Overloading) objektinio programavimo kalboje leidžia apibrėžti kelis metodus viename klase su tuo pačiu pavadinimu, bet skirtingomis signatūromis.
Pagrindinės metodų perkrovimo taisyklės:
-
Skirtumas signatūrose: Metodų signatūra apima metodo pavadinimą ir jo parametrų tipų sąrašą atitinkama tvarka. Kad metodai būtų laikomi perkrautais, jų signatūros turi skirtis.
// Skirtingų signatūrų pavyzdžiai void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Skiriasi parametrų tvarka -
Metodo pavadinimas turi būti tas pats: Perkrauti metodai turi turėti tą patį pavadinimą.
// Teisingas perkrovimo pavyzdys class Example { void process(int a) { } void process(double b) { } } -
Grąžinamosios reikšmės tipas nėra signatūros dalis: Tik grąžinamosios reikšmės tipo keitimas nepadaro metodo perkrautu. Kompiliatorius negalės atskirti, kurį metodą iškviesti, jei signatūros yra tokios pačios:
// Nėra perkrovimas - klaida kompiliuojant int calculate() { return 1; } String calculate() { return "error"; } -
Prieigos modifikatoriai ir išimčių specifikatoriai neturi įtakos perkrovimui: Panašiai kaip ir grąžinamosios reikšmės tipas, keitimas tik prieigos modifikatoriuose (
public,private,protected,default) arba išimčių sąraše (throws) neveda prie perkrovimo.// Nėra perkrovimas - klaida kompiliuojant, jei signatūros yra tokios pačios public void doSomething() { } private void doSomething() { } -
Parametrų tvarka turi reikšmę: Keičiasi parametrų tipų tvarka, signatūros skiriasi.
// Yra perkrovimas void setup(int width, int height) { } void setup(int height, String unit) { } // Skiriasi antruoju parametru void setup(String unit, int size) { } // Skiriasi tipu ir tvarka -
Parametrų skaičius turi reikšmę: Skirtingas parametrų skaičius sukuria skirtingas signatūras.
// Yra perkrovimas void log(String message) { } void log(String message, int level) { }
Todėl pagrindinis veiksnys, lemiantis metodų perkrovimą, yra jų signatūros unikalumas, kuris apibrėžiamas jų pavadinimu ir parametrų rinkiniu (tipais ir tvarka).