Kaj je preobremenitev metode?

Preobremenitev metod je značilnost večine objektno usmerjenih programskih jezikov, v katerih imata dve ali več metod isto ime, vendar različne parametre. Natančneje, število, vrsta podatkov in/ali vrstni red parametrov se razlikujejo. Ko je koda prevedena, bo pravilna metoda samodejno izbrana glede na to, kako je poklicana. Metode so v nekaterih programskih jezikih znane tudi kot funkcije, zato se preobremenitev metod včasih imenuje preobremenitev funkcij.

Preprost primer preobremenitve metode bi bila metoda, ki izračuna površino kvadrata. Lahko se definira kot getArea(Square s). To metodo bi lahko preobremenili, da bi dodatno izračunali površino kroga z dodajanjem metode getArea(Circle c).

Glavna zahteva za preobremenitev metod je, da imajo metode isto ime. Njihovi podpisi metode – ime metode, število parametrov in podatkovni tipi parametrov – bi morali biti sicer edinstveni. Na ta način lahko prevajalnik določi, katero metodo naj izvede.

Konstruktorji, metode, ki se uporabljajo za ustvarjanje primerkov predmetov, so pogosto preobremenjeni. To se naredi za inicializacijo predmeta z vrednostmi, ki niso privzete. Na primer, predmet zaposlenega z dvema poljema (ime in datum rojstva ali dob) ima lahko naslednje preobremenjene konstruktorje: Employee(), Employee(name) in Employee(name, dob). Prvi konstruktor ustvari objekt zaposlenega s praznimi polji z imenom in dob. Drugi nastavi polje za ime, vendar pusti polje dob prazno, tretji pa definira tako polje ime kot polje dob.

Preobremenitev metod se najpogosteje izvaja, da bi se več metod logično prikazalo kot ena metoda. V primeru getArea(), medtem ko sta fizično dve metodi, je klicatelj predstavljen z eno samo logično metodo getArea(). Na ta način je mogoče getArea() razširiti za delo z drugimi oblikami – trikotniki, trapezi in tako naprej –, medtem ko se še vedno logično predstavlja kot ena sama metoda.

Metode so tudi preobremenjene, da se ohrani združljivost za nazaj. Metodi, ki izvaja zapleten izračun, bi lahko dali novo zahtevo, da po želji izvede isti izračun z rahlo spremembo. Metodi je dodan nov parameter, ki bo določil, kako izvesti izračun – po starem ali po novem.
Da se izognete iskanju vseh primerov, v katerih je metoda poklicana, in dodajanju novega parametra, je metoda lahko preobremenjena. Nova metoda bo imela stari podpis in bo poklicana z obstoječo kodo. Sama ne bo vsebovala nobene logike in bo preprosto poklicala spremenjeno metodo in za novi parameter prenesla privzeto vrednost »stari način«. Nova koda bo poklicala spremenjeno metodo in posredovala nov parameter z ustrezno vrednostjo, starim ali novim načinom.
Preobremenitev metode je vrsta polimorfizma, pri kateri se lahko ista logična metoda v praksi uporablja na več načinov. Preobremenitev metode ni isto kot preglasitev metode. Preglasitev metode je, ko definicijo metode v nadrejenem razredu spremeni podrejeni razred. V tem primeru imata obe metodi enak podpis.