Peamine erinevus : ülekoormus tähendab, et kaks sama klassi meetodit, millel on sama nimi ja erinevad parameetritüübid, samas kui ülekaalukad vahendid omavad samas klassis kahte erinevat meetodit samade parameetritüüpidega, kuid erinevate rakendustega.
Meetodid, mis on ülekaalukad ja ülekoormatud, on java programmeerimiskeeles kasutatavad kaks mõistet või tehnikat. Mõlemad mõisted võimaldavad programmeerijal pakkuda sama nime all olevate meetodite jaoks erinevaid rakendusi. See artikkel eristab programmitöö kahte mõistet.
Funktsioonide ülekoormus või meetodite ülekoormus võimaldab luua mitmeid samade nimede all olevaid meetodeid, mis on samas klassis erinevad, kuid erinevad funktsiooni sisendist ja väljundtüübist. See on lihtsalt defineeritud kui ühe funktsiooni võime täita erinevaid ülesandeid.
Ülekoormuse korral on meetodi rakendustel sama nimi, kuna nad täidavad sarnaseid ülesandeid. Samuti peetakse ülekoormust olemuselt polümorfseks. Erinevate teostustega funktsioonid sõltuvad nende konkreetsetest argumentide tüüpidest. Tavaliselt seostatakse see staatiliste programmeerimiskeeltega, mis teostavad funktsioonikõnede tüübikontrolli. Samuti peetakse seda praktiliseks, kuna see võimaldab programmeerijal kirjutada mitmeid erinevaid samasse klassi kuuluvaid meetodeid. Siiski muudab käivitusprotsessor kõigi ülekoormatud meetodite nime, mis võib olla probleemiks.
Objekti orienteeritud programmeerimisel on kõige olulisem meetod, mis võimaldab alaklassil või lasteklassil pakkuda meetodi spetsiifilist rakendamist, mida juba pakub üks tema super-klassidest või vanemaklassidest. Alamklassis rakendamine tühistab või asendab vanemaklassi rakenduse, pakkudes sama nime, samade parameetrite või allkirjaga meetodit ja sama tagasipöördumistüüpi kui vanema klassi meetod.
Meetodi ülimuslikkuse korral kodeeritakse funktsioone programmis konkreetsete ülesannete täitmiseks. Ülekirjutamine sõltub põhiklassi funktsiooni olemasolust. Siin määrab teostatud funktsiooni objekt, mida kasutatakse selle kutsumiseks, st kui meetodi käivitamiseks kasutatakse vanemaklassi objekti, siis täidetakse vanema klassi funktsioon. Ülekirjutamine on olemuselt polümorfne; see aitab kujundada programme, mis põhinevad esimesel kaudsel parameetril, mida saab lahendada käitusajal. Javas on mõned keeled, mis võimaldavad programmeerijal takistada meetodi ületamist.
Ülekoormuse ja ülekandmise võrdlus:
Ülekoormus | Ülekirjutamine | |
Määratlus | See tähendab, et sama klassi meetodid on sama nime all, kuid igal meetodil on erinevad parameetrid või neil on ühesugused parameetrid erinevat tüüpi ja järjekorras. | See tähendab sama klassi alamklassi, millel on sama nimi ja täpselt sama tüüpi parameetrid ja sama tagasipöördumistüüp kui super klassil. |
Tähendus | See tähendab, et enam kui ühel meetodil on samas klassis sama nimi, kuid neil on erinev allkiri. | See tähendab, et baasklassi meetod määratletakse tuletatud klassis sama allkirjaga. |
Käitumine | See lisab või laiendab meetodite käitumist. | See muudab meetodi olemasolevat käitumist. |
Polümorfism | See on kompileerimisaja polümorfism. | See on jooksuaegne polümorfism. |
Staatiline meetod | Staatilist meetodit saab üle koormata. | Staatilist meetodit ei saa ületada. |
Bond | Staatiline side. | Dünaamiline side. |
Pärand | See võib nõuda pärimist. | See nõuab alati pärimist. |
Assotsiatsioon | See on tavaliselt seotud staatiliste programmikeeltega. | See on tavaliselt seotud objektorienteeritud programmidega. |
Allkiri | Meetoditel on erinev allkiri. | Meetoditel peab olema sama allkiri. |
Kiirus | See on kiirem kui ülekaalukas. | See on aeglane võrreldes ülekoormusega. |
Klassid | See ei vaja ülekoormamiseks rohkem kui ühte klassi. | See nõuab ülekoormuse jaoks vähemalt kahte klassi. |
Tase | Meetoditel võib olla mis tahes juurdepääsutasemel. | Meetoditel on sama või lai ligipääsu tase. |
Näide | Klass Lisa { int summa (int a, int b) { tagastage a + b; } int summa (int a) { tagastage a + 10; } } | Klass A / Super klass { tühine kuva (int num) { print num; } } B-klass pärsib A-klassi B-klassi alamklass { tühine kuva (int num) { print num; } } |