Está en la página 1de 5

...

0esarrollo de aplicaciones con interfaz grfica y manejo de clases y objetos

Sobrecarga de mtodos El encabezado o firma de un mtodo (la primera lnea en el) nos dice que modificador tiene el mtodo (publico, protegido, privado), su tipo de retorno (void o alguno de los tipos previamente vistos) y los parmetros que requiere para trabajar. ero ya que se define un mtodo, ste puede definirse varias veces (sobrecargarse) en la misma clase, pero cambiando su encabezado de manera que sean otros los parmetros a utilizar, en !"" se pueden sobrecargar operadores, como el ", el # , etc., pero en $ava no, en $ava el operador " se puede utilizar para sumar n%meros o para concatenar &trings solamente, la sobrecarga se puede realizar en mtodos constructores o mtodos no constructores. ara ejemplificar la sobrecarga de mtodos supongamos que tenemos alguna clase en la que se lleva el control del inventario de un artculo y puede ser que la cantidad que se reciba sea un entero, pero tambin pueda ser un n%mero de doble precisi'n, o un objeto tipo &tring, entonces podemos tener el mismo mtodo definido tres veces( public void cambia( int numero) ) inventario * numero+ , public void cambia( double numero) ) -- esto es la conversi'n de tipos usado tambin en !"" inventario * (int) numero+ , public void cambia( &tring numero) ) -- asumiendo que inventario es entero inventario * .nteger.parse.nt(numero)+ , !uando el mtodo sea llamado, $ava revisar cual es el mtodo a utilizar dependiendo de la firma y el parmetro pasado. Esto es muy utilizado tambin en los constructores de los objetos, por ejemplo pensemos en la clase unto, en la que podemos construir un objeto unto a partir de dos valores enteros, pero supongamos que tambin quisieran ser construidos a travs de dos valores de precisi'n doble (double) o que se quisiera construir un objeto a partir de otro objeto unto, veamos como quedara la clase unto( public class unto ) private int /+ -- variable para la coordenada en / private int y+ -- variable para la coordenada en y

-- metodo para construir un objeto sin parmetros public unto() ) / * 1+ y * 1+ , -- mtodo para construir un objeto con parmetros enteros public unto(int /, int y) ) t2is./ * /+ t2is.y * y+ , -- mtodo para construir un objeto con parmetros double public unto(double /, double y) ) t2is./ * (int) /+ t2is.y * (int) y+ , -- mtodo para construir un objeto con parmetro objeto unto public unto( unto obj) ) t2is./ * obj./+ t2is.y * obj.y+ , -- mtodo que te d el valor de la coordenada / public int obten3() ) return /+ , -- mtodo que te d el valor de la coordenada y public int obten4() ) return y+ , -- mtodo que sirve para cambiar el valor de la coordenada / public void cambia3(int /) ) -- t2is se utiliza porque se esta utilizando (/) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is./ * /+ , -- mtodo que sirve para cambiar el valor de la coordenada y public void cambia4(int y) ) -- t2is se utiliza porque se esta utilizando (y) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is.y * y+ ,

En esta clase, a2ora manejamos diferentes constructores para la clase, esto ya lo 2abamos 2ec2o antes, y es entonces que tambin los constructores se pueden definir de varias

maneras. 0e la misma manera pudiramos redefinir alg%n o algunos mtodos. &upongamos que los valores de / o de y, sean tomados no solamente de enteros sino de valores tipo double, entonces tendramos una clase como la siguiente( public class unto ) private int /+ -- variable para la coordenada en / private int y+ -- variable para la coordenada en y -- metodo para construir un objeto sin parmetros public unto() ) / * 1+ y * 1+ , -- mtodo para construir un objeto con parmetros enteros public unto(int /, int y) ) t2is./ * /+ t2is.y * y+ , -- mtodo para construir un objeto con parmetros double public unto(double /, double y) ) t2is./ * (int) /+ t2is.y * (int) y+ , -- mtodo para construir un objeto con parmetro objeto unto public unto( unto obj) ) t2is./ * obj./+ t2is.y * obj.y+ , -- mtodo que te d el valor de la coordenada / public int obten3() ) return /+ , -- mtodo que te d el valor de la coordenada y public int obten4() ) return y+ , -- mtodo que sirve para cambiar el valor de la coordenada / public void cambia3(int /) ) -- t2is se utiliza porque se esta utilizando (/) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is./ * /+ , -- mtodo que toma un double para cambiar a /

public void cambia3(double /) ) -- t2is se utiliza porque se esta utilizando (/) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is./ * (int) /+ , -- mtodo que sirve para cambiar el valor de la coordenada y public void cambia4(int y) ) -- t2is se utiliza porque se esta utilizando (y) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is.y * y+ , -- mtodo que toma un double para cambiar a y public void cambia4(double y) ) -- t2is se utiliza porque se esta utilizando (y) como parmetro y como -- variable de instancia y esto es para que no se confunda t2is.y * (int) y+ , -- metodo para obtener el objeto en formato &tring public &tring to&tring() ) return 5(5 " obten3() " 5,5 " obten4() " 5)5+ , ,

6na aplicaci'n no grfica que use esta clase para entender su manejo pudiera ser( public class 7plicacion unto ) private static unto a, b, c, d, e+ public static void main(&tring89 args) ) a * ne: unto()+ b * ne: unto(;, <)+ c * ne: unto(=.1, >.1)+ d * ne: unto(b)+ e * ne: unto(c)+ &ystem.out.println(5 unto a * 5 " a.to&tring())+ &ystem.out.println(5 unto b * 5 " b.to&tring())+ &ystem.out.println(5 unto c * 5 " c.to&tring())+ &ystem.out.println(5 unto d * 5 " d.to&tring())+ &ystem.out.println(5 unto e * 5 " e.to&tring())+ a.cambia3(?.1)+ c.cambia4(#=.1)+ &ystem.out.println(5@alores cambiados5)+ &ystem.out.println(5 unto a * 5 " a.to&tring())+ &ystem.out.println(5 unto c * 5 " c.to&tring())+ , ,

7mbas clases deben estar en la misma carpeta para que se pueda utilizar la aplicaci'n Aa forma en la que se puede visualizar esto es compilando como una aplicaci'n no grfica y ejecutndola, de la siguiente manera(

0e esta manera observamos la manera de crear diferentes objetos de la clase unto, y tambin observamos como es posible cambiar el valor de alguna de las variables de instancia de esos objetos utilizando un n%mero de punto flotante en vez de un n%mero entero. Bemos 2ec2o uso de una aplicaci'n no grfica para que se enfatice el uso de este concepto solamente. Cotars que en la clase unto utilizamos el mtodo to&tring(), este mtodo es muy utilizado en todas las clases &ingulares, ya que es la manera de representar cualquier objeto de la clase en formato &tring.

También podría gustarte