Ülekoormatud meetodid on samasse klassi kuuluvad meetodid, millel on sama nimi, kuid mis aktsepteerivad argumentidena erinevaid muutujatüüpe. Näiteks võib klass sisaldada kahte erinevat "lisamise" meetodit: üks, mis aktsepteerib kahte topeltväärtust, "add (double a, double b)" ja teine, mis aktsepteerib kahte täisarvu väärtused, "add (int a, int b)." Arvuti otsustab automaatselt, millist meetodit käivitamise ajal kutsuda, lähtudes muutujatüüpidest, mis edastatakse meetod.
Paindlikkus
Ülekoormatud meetodid annavad programmeerijatele paindlikkuse sarnaste meetodite kutsumiseks erinevat tüüpi andmete jaoks. Kui töötate näiteks matemaatikaprogrammiga, võite kasutada ülekoormust, et luua mitu "korrutatavat" klassi, millest igaüks korrutab erineva arvu argumentide tüüpi: lihtsaim "korruta (int a, int b)" korrutab kaks täisarvud; keerulisem meetod "korruta (double a, int b, int c)" korrutab ühe kahekordse kahe täisarvuga -- siis võiks kutsuge "korrutama" mis tahes muutujate kombinatsioonile, mille jaoks olete loonud ülekoormatud meetodi, ja saate õige tulemuse.
Päeva video
Konstruktorid
Ülekoormust kasutatakse ka konstruktoritel, et luua erinevaid andmemahtusid arvestades uusi objekte. Näiteks võite kasutada ülekoormust, et luua objektile "Maja" kolm erinevat konstruktorit koos majanumbri, tänavanime ja värvimuutujatega. Lihtsaim konstruktor "House()" ei võta argumente ja loob vaike- või tühjade muutujatega maja. Keerulisem konstruktor "House (int houseNumber, String streetName)" loob maja määratud majanumbri ja tänavanimega, kuid vaike- või tühja värviga. Kõige keerulisem konstruktor "House (int houseNumber, String streetName, String color)" loob maja kogu määratud teabega, jätmata midagi vaikimisi. Seejärel saate luua majaobjekti praegu saadaoleva teabe põhjal, jättes kättesaamatu teabe tühjaks või vaikimisi.
Mitmetähenduslikud viited
Ülekoormatud meetodid peavad ebaselguse vältimiseks kasutama erinevat arvu või tüüpi argumente. Kui loote samas klassis kaks sama nimega meetodit ja aktsepteerite argumentidena kahte täisarvu, Java kompilaator ei suuda neil kahel vahet teha, isegi kui sisendmuutujatel on erinevad nimed. Näiteks meetod "add (int a, int b)" ei saa eksisteerida samas klassis kui meetod "add (int c, int d)."
Tagastamise tüübid
Peate määrama iga ülekoormatud meetodi jaoks tagastustüübi. Meetoditel võib olla erinevaid tagastustüüpe – näiteks "add (int a, int b)" võib tagastada täisarvu, samas kui "add (double a, double b)" tagastab kahekordse väärtuse. Java ei suuda aga tagastustüübi alusel eristada kahte erinevat meetodit. Seetõttu ei saa "int korrutada (topelt a, topelt b)" eksisteerida samas klassis kui "topeltkorrutis (topelt a, topelt b)."