Sobrecàrrega de mètodes

De Viquipèdia
Salta a la navegació Salta a la cerca

La Sobrecàrrega de mètodes (en anglès function overloading) és quan es defineixen dos mètodes amb el mateix nom i a la mateixa classe però amb diferents implementacions. L'execució d'una crida a un mètode sobrecarregat dependrà aleshores del context de la crida.

Per exemple, ferTasca() i ferTasca(Objecte O) són mètodes sobrecarregats. Per cridar al primer no cal que li passem cap paràmetre, en canvi el segon necessita un paràmetre de tipus Objecte. Aleshores segons la crida que s'hagi fet s'executarà una implementació o una altra.

Cada llenguatge de programació té les seves peculiaritats per fer ús de la sobrecàrrega de mètodes,[1] per exemple en Java es pot tenir la funció o mètode sobrecarregat amb el mateix nombre de paràmetres però essent de tipus diferent,[2] ja que si fossin iguals, el compilador no sabria quin triar.[3] I en C++ es poden donar valors per defecte als paràmetres,[4] de manera que quan es crida a la funció, si s'omet el paràmetre, aquest obtindrà el valor per defecte assignat en la seva declaració.

Regles per la sobrecàrrega[modifica]

Bàsicament podem sobrecarregar mètodes a partir de dues regles generals, tot i que podem trobar altres regles segons el llenguatge que estiguem utilitzant.

  • Tenir diferent nombre d'arguments
  • Si hi ha el mateix nombre d'arguments que siguin de tipus diferents
  • Que el mètode o funció retorni un tipus de dada o un altre és indiferent

Exemples[modifica]

public int suma(int a, int b)
public long suma(long a, long b)
public long suma(long a, long b, long c)


Sobrecàrrega de constructors[modifica]

La sobrecàrrega de constructors s'utilitza per crear o instanciar objectes de formes diferents. Per exemple tenim aquests tres constructors d'un objecte anomenat Persona en llenguatge java on podem crear una Persona a partir del seu nom i els dos cognoms, a partir del seu nom i només el seu primer cognom o bé la Persona sense cap dada.

public class Persona {
  private String Nom, Cognom1, Cognom2;
  
  //Constructor Persona amb Nom i 2 cognoms
  public Persona(String n, String c1, String c2) {
    Nom = n;
    Cognom1 = c1;
    Cognom2 = c2;
  }

  //Constructor Persona amb Nom i el primer cognom
  public Persona(String n, String c1) {
    Nom = n;
    Cognom1 = c1;
    Cognom2 = null;
  }

  //Constructor Persona sense cap dada
  public Persona() {
    Nom = null;
    Cognom1 = null;
    Cognom2 = null;
  }

}

Referències[modifica]

Enllaços externs[modifica]