Räägi mulle meetodite ülekoormamise reeglitest.
sobes.tech AI
Vastus AI-lt
Meetodite ülekoormamine (Method Overloading) objektorienteeritud programmeerimises võimaldab määratleda ühe klassi sees mitu meetodit sama nimega, kuid erinevate signatuuridega.
Meetodite ülekoormamise põhireeglid:
-
Signatuurides on erinevused: Meetodi signatuur hõlmab meetodi nime ja tema parameetrite tüübilisti vastavas järjekorras. Selleks, et meetodid loetakse ülekoormatuks, peavad nende signatuurid eristuma.
// Erinevate signatuuride näited void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Parameetrite järjekord erineb -
Meetodi nimi peab olema sama: Ülekoormatavad meetodid peavad omama sama nime.
// Õige ülekoormamise näide class Example { void process(int a) { } void process(double b) { } } -
Tagastatava väärtuse tüüp ei ole signatuuri osa: Ainult tagastatava väärtuse tüübi muutmine ei tee meetodeid ülekoormatuks. Kompilatsioonieeskirjad ei võimalda eristada, millist meetodit kutsuda, kui signatuurid on samad:
// Ei ole ülekoormus - kompileerimisviga int calculate() { return 1; } String calculate() { return "error"; } -
Juhtimismodifikatorid ja erandite spetsifikatsioonid ei mõjuta ülekoormust: Sarnaselt tagastatava väärtuse tüübile, ei mõjuta ainult juurdepääsukmodifikatorite (
public,private,protected,default) või erandite loendi (throws) muutmine ülekoormust:// Ei ole ülekoormus - kompileerimisviga, kui signatuurid on samad public void doSomething() { } private void doSomething() { } -
Parameetrite järjekord on oluline: Parameetrite tüüpide muutmine muudab signatuurid erinevaks.
// On ülekoormus void setup(int width, int height) { } void setup(int height, String unit) { } // Erineb teise parameetriga void setup(String unit, int size) { } // Erineb tüübist ja järjekorrast -
Parameetrite arv on oluline: Erinev arv parameetreid loob erinevad signatuurid:
// On ülekoormus void log(String message) { } void log(String message, int level) { }
Seega, meetodite ülekoormamise peamine tegur on signatuuri unikaalsus, mis määratakse selle nime ja parameetrite (tüüpide ja järjekorra) kogumi alusel.