Hola y bienvenidos a esta elección.
A continuación vamos a ver el tema de sobrecarga de métodos en Java están listos.
Vamos vamos a cerrar este proyecto y vamos a crear un nuevo
enfile new project Java Web Maybe en Java Application.
Y el nombre del proyecto se va a llamar sobrecarga métodos
lo depositamos en la carpeta de cursos diagonal Java en nombre del paquete lo dejamos vació y damos
clic en Finalizar.
Vamos a agregar una nueva clase click derecho ni un Java class y el nombre de la clase se va a llamar
operaciones y damos en finalizar
esta clase de operaciones.
Va a tener un método llamado sumar.
Sin embargo ese método va a poder recibir varios argumentos de varios tipos.
Esto quiere decir que vamos a sobrecargar el método sumar al agregar dos o más métodos con el mismo
nombre.
Así que esto es la sobrecarga de métodos agregar dos o más métodos con el mismo nombre con diferentes
argumentos y vamos a ver a continuación varias de las reglas para definir la sobrecarga de métodos en
Java.
Por ejemplo en este caso vamos a definir nuestro primer método el primer método de sumar va a ser de
tipo Public para que pueda ser llamado desde otras clases.
Va a ser estático para que no haya necesidad de crear instancias para mandar a llamar.
Estos métodos va a regresar un entero y el método se va a llamar sumar va a recibir dos argumentos el
argumento de A y B respectivamente y vamos a hacer un gritón de la suma de estos argumentos además de
sin embargo vamos a mandar un mensaje a consola para saber cuál es el método que se está ejecutando
ya que como vamos a tener varios métodos con el mismo nombre entonces queremos saber cuál es el método
sobrecargado que se está ejecutando así que mandamos a imprimir método sumar con los argumentos de tipo
entero ambos argumentos son de tipo entero.
Hasta aquí todavía no existe la sobrecarga de métodos ya que para sobrecargar un método debe de haber
al menos otro método con el mismo nombre.
Así que vamos a definir otro método aquí sería la sobrecarga del método sumar definimos.
Otro método es público de tipo Static pero en este caso va a regresar un doble y el método se llama
también sumar así que en este caso es cuando existe la sobrecarga.
Tenemos dos o más métodos con el mismo nombre pero los argumentos no pueden ser iguales.
Debe de tener diferentes argumentos en este caso los argumentos en lugar de ser de tipo entero son de
tipo doble y en el cuerpo de este método vamos a hacer lo siguiente Vamos a retornar la suma de ambas.
Pero con los argumentos de tipo doble que estamos recibiendo y de igual manera vamos a mandar un mensaje
a consola método sumar pero con los argumentos de tipo doble.
Así que este método ya se considera un método sobrecargado.
Ahora para aullaba únicamente se va a revisar que los argumentos sean distintos ya que incluso el orden
de los argumentos importa pero únicamente va a considerar los tipos y no los nombres los nombres los
va a omitir y únicamente le interesa revisar los tipos.
Así que en este caso tenemos el tipo int e int y en este caso tenemos el tipo doble y el tipo doble.
Pero también podríamos definir por ejemplo un tipo int y con que tuviéramos un tipo doble de este lado
entonces ya tenemos diferentes argumentos o podríamos tener también por ejemplo un doble de este lado
y un int de este lado y con eso sería suficiente para tener la combinación de indol o de doble Int.
Cualquier intercambio que hagamos con los argumentos no sean iguales el mismo tipo entonces se considera
una sobrecarga de métodos.
Así que el nombre de las variables no se considera solamente los tipos y el orden de los tipos.
Otra de las características en la sobrecarga de métodos es que podemos modificar el tipo de retorno.
Podemos ver que no importa si los tipos de retorno son diferentes se sigue considerando una sobrecarga
vãlida y también podríamos cambiar incluso el modificador de acceso.
Podríamos tener un método privado y otro público y como en los constructores también se seguiría considerando
una sobrecarga del método sumar así que esas son las reglas para definir la sobrecarga de métodos en
Java.
Bien vamos a crear una clase para poner en prueba esto damos derecho a new Java class y el nombre de
la clase se va a llamar sobrecarga métodos damos en finalizar
vamos a llegar a un método main damos formato y vamos a utilizar nuestro método sumar pero aquí lo interesante
va a ser cuál es el método que se manda llamar.
Dependiendo de los argumentos que enviemos al método sumar así que vamos a imprimir lo siguiente Vamos
a hacer una primera operación así que ponemos resultado 1 y vamos a utilizar el nombre de nuestra clase
para mandar a llamar.
El método estático y podemos observar que ya se nos muestran las dos opciones así que la sobrecarga
de métodos es tener dos o más métodos con el mismo nombre podemos sumar que ya tenemos el mismo nombre
pero tenemos diferentes argumentos.
En este caso los argumentos de doble y doble respectivamente y los argumentos de INT e Inter respectivamente
y también tenemos el tipo de regreso en el primer caso es doble y en el segundo caso es Int.
Así que el tipo de retorno como hemos comentado puede cambiar bien.
Así que en primer lugar vamos a utilizar nuestro método que recibe dos enteros así que vamos a proporcionar
las literales enteras 3 y 4 respectivamente.
Guardamos cambios y ejecutamos y vamos a ver cuál es el método que se manda llamar
y podemos observar que en este caso se mandan a llamar el método sumar con dos argumentos de tipo entero
y el resultado de sumar tres +4 es igual a 7 así que hasta aquí todo funciona sin ningún problema.
Vamos a ver un segundo ejemplo resultado 2
de igual manera mandamos a llamar ahora el método sumar por ejemplo 2 y 4 ahora para qué mala llamar
el método con valores de tipo doble.
Podemos utilizar punto flotante por ejemplo 2.0 o indicar que esta literal en lugar de ser de tipo entero
podemos indicar que sea de tipo doble o de tipo flotante.
Cualquier duda con esto pueden revisar las lecciones de tipos primitivos en este caso vamos a poner
2.0 y aunque tenemos una literal de tipo entero vamos a ver cuál es el método que se manda llamar ejecutamos
y podemos observar que el método que se mandó a llamar es el método sumar con dos argumentos de tipo
doble.
Así que aunque uno de sus argumentos fue de tipo entero ya no se puede mandar a llamar.
El método con dos enteros ya que uno de sus argumentos es de tipo doble y recordemos que un valor de
tipo doble no se puede almacenar en un tipo entero ya que podríamos perder precisión al almacenar un
tipo doble el cual tiene 64 bits y querer almacenarlo en un tipo entero que tiene 32 bits.
Así que por ello se está mandando llamar el método con dos argumentos de tipo doble bien vamos a continuar
vamos a agregar otro método sobrecargado vamos a agregar ahora el método públic Static de tipo doble
y vamos a recibir dos argumentos pero el primero va a ser de tipo entero y el segundo va a ser de tipo
doble esto para revisar que también importa el orden en que definimos los argumentos mandamos a imprimir
método sumar pero con los argumentos de INT y Nobol respectivamente y hacemos al botón de Hamás de y
también vamos a agregar otro método públic Static Nobol
llamado sumar pero vamos a intercambiar los tipos de los argumentos.
Ahora el primer argumento es de tipo doble y el segundo argumento es de tipo int.
Mandamos a imprimir que se manda llamar el método sumar pero con los argumentos de doble respectivamente
y regresamos la suma de ambas ve bien con eso es suficiente ya tenemos varios métodos sobrecargados
ahora vamos a ejecutar esta misma prueba y vamos a ver cuál es el método que se manda llamar.
En esta línea debido a que ya agregamos más métodos sobrecargados vamos a ver que en este caso se mandó
llamar el método doble doble.
Pero ahora vamos a ver cuál es el método que se manda llamar.
Guardamos cambios ejecutamos y podemos ver que ahora ya se manda llamar el método sumar pero con los
argumentos de doble e int respectivamente ya que ya tenemos un método que soporta el tipo doble y el
tipo entero.
En este orden y si invertimos el orden en que pasamos los argumentos vamos a validar otra prueba
podemos ver que ya tenemos más métodos sobrecargados más opciones y ahora la prueba va a ser tres y
posteriormente pasamos el valor por ejemplo de cinco pero vamos a indicar que va a ser un tipo longe
así que la pregunta aquí es cuál es el método que se manda llamar ya que estamos proporcionando un entero
y un tipo lonko pueden poner pausa al video y revisar cuál es el método que se debería ejecutar
bien.
Esperemos que ya lo hayan resuelto pero en este caso para poder entenderlo a detalle estamos observando
que vamos a mandar a llamar un tipo entero así que de entrada el primer argumento deberá de ser de tipo
entero así que podría ser este método o este método ya que son los dos métodos de tipo entero que podemos
ejecutar.
Sin embargo el segundo argumento es de tipo longe así que de manera automática este método se debería
de descartar ya que un tipo long tiene 64 bits y un tipo entero tiene 32 bits así que el siguiente método
que se podría utilizar sería éste y debido a que un tipo longe se puede almacenar directamente a un
tipo flotante de manera automática entonces este es el método que se debería mandar a llamar el método
sumar con los argumentos de INT y doblón respectivamente.
Esto debido a que no tenemos el método sobrecargado con el tipo log así que lo que va a hacer es hacer
un casting o una conversión hacia arriba y a buscar el tipo que soporte de mejor manera almacenar su
valor así que en este caso si hubiera tipo Oolong buscaría utilizar el método con un argumento de tipo
longe como no existe.
Entonces busca el tipo float y como tampoco existe entonces busca el tipo doble así que podemos observar
que es bastante flexible en este caso hace una conversión hacia arriba de manera automática así que
vamos a comprobar esto
mandamos a llamar este método y podemos observar que el método que se mandó a llamar en nuestra prueba
tres es el método de sumar con los argumentos de hit y dobles respectivamente así que recordemos que
en primer lugar tenemos el tipo bait con 8 bits posteriormente tenemos el tipo Llort y el tipo Char
con 16 bits posteriormente estos se pueden convertir a un tipo entero que tiene 32 bits posteriormente
este se puede convertir a un tipo long de manera automática que tiene 64 bits y posteriormente empezamos
con los tipos flotantes.
El Long se puede almacenar a un tipo flotante
y aunque tiene menos bits maneja la notación exponencial.
Por lo tanto un valor de tipo no se puede almacenar en un tipo float debido a que maneja la notación
exponencial y puede almacenar números bastante más grandes que el tipo log y finalmente el tipo doble
es el más grande tiene 64 bits pero con notación exponencial así que este es el tipo que almacena los
números más grandes.
Así que en este caso el argumento Long busca un tipo log para almacenar.
Como no existe esta firma de método entonces busca un tipo float como no existe.
Entonces finalmente busca el tipo doble.
Así que el método que se mandó a llamar es el método que recibe en primer lugar un entero y en segundo
lugar un doble ya que se realizó la conversión hacia arriba o castin del tipo primitivo.
Cualquier duda también pueden revisar los tipos primitivos pero básicamente esto es lo que está sucediendo.
El tipo long busca asignarse a un tipo Flock y como no existe entonces busca asignarlo a un tipo doble
y ese es el argumento que existe.
Por lo tanto ese es el tipo que va a utilizar.
Ahora vamos a poner otro ejemplo también para que lo puedan poner en práctica
pero ahora los argumentos que vamos a proporcionar son los valores de 3 F es decir una litera flotante
y el carácter de A. pueden poner pausa al vídeo y resolver cuál es el método que se va a mandar a llamar.
Esperemos que ya lo hayan resuelto y ahora vamos a explicar cuál es el método que se manda a llamar
para agregar a esta clase de lado derecho y poder analizar las dos clases.
Vamos a dar clic derecho sobre esta clase y seleccionamos New document tap Group y de esta manera ya
tenemos la clase de operaciones del lado izquierdo y la clase de sobrecarga de métodos del lado derecho
y si queremos regresar esta clase de nueva cuenta como estaba del lado izquierdo entonces damos clic
derecho y seleccionamos colapsã document tap Group y de esta manera ya regresamos.
Como teníamos nuestras clases así que vamos a poner la del lado derecho click derecho nuevo documental
Group y vamos a comenzar a analizar cuál es el método que se va a mandar a llamar así que en este caso
tenemos los siguientes métodos sobrecargados y tenemos nuestro método sumar con los atributos de 3 F
que es el tipo flotante y un tipo Char así que vamos a empezar a revisar cuáles son los métodos que
se dejan de ejecutar.
Por un lado tenemos el método con dos argumentos de tipo entero pero si revisamos nuestro primer argumento
es de tipo flotante así que un flotante no se puede almacenar en un tipo entero.
Por lo tanto este primer método se descartaría simplemente porque un tipo flotante tiene 32 bits y un
tipo entero aunque también tiene 32 bits el flotante tiene notación exponencial.
Por lo tanto un número flotante de manera automática no se puede almacenar en un tipo entero.
Ahora posteriormente tenemos los métodos que reciben argumentos de tipo doble así que podría ser este
método o podría ser este método también este método lo descartaría.
Así que ya tenemos como dos candidatos el método sumar con los dos argumentos de tipo doble o con un
argumento de tipo doble y un tipo entero.
Ahora vamos a analizar el segundo argumento el tipo Char se puede almacenar en un tipo doble así que
también este método es candidato y un tipo hecharse puede almacenar en un tipo entero y aunque no tenemos
un tipo Char en nuestros métodos sobrecargados el tipo int puede funcionar para almacenarlo así que
tanto el tipo Nobol como el tipo entero podrían funcionar para almacenar un tipo Char.
Sin embargo cuál es el método que se manda a llamar ya va a seleccionar el tipo con menor número de
bits así que en este caso en lugar de mandar a llamar el tipo Nobol va a mandar a llamar el tipo int
para recibir el tipo Char.
Vamos a ver la explicación de nueva cuenta tenemos los tipos primitivos bait con 8 bits.
Posteriormente tenemos sort
y Char al mismo nivel con 16 bits y un char recordemos que se puede convertir a un tipo entero por lo
tanto el siguiente tipo primitivo que puede almacenar un char o un short es el tipo entero con 32 bits.
Después tenemos el tipo long con 64 bits tenemos el tipo float
con 32 bits pero con anotación exponencial y finalmente el tipo doble connotación exponencial de 64
bits así que podemos observar que el tipo Char puede ser almacenado en un tipo doble o en un tipo int
pero Char empieza su conversión hacia arriba es decir el casting y al no encontrar un tipo Char que
lo pueda almacenar entonces busca el siguiente tipo.
En este caso un tipo entero así que se va a quedar hasta aquí para poder utilizar la menor cantidad
de bits.
Si no tuviéramos este tipo entero entonces seguiría buscando buscaría un tipo log si no lo encontrara
buscaría un tipo Floqq y si no lo encontrara buscaría un tipo doble.
Así que por ello es que podemos observar que tanto este método con la firma del tipo doble o con la
firma del tipo int en el segundo argumento podrían funcionar pero se va a quedar en el tipo entero ya
que es el tipo con menor cantidad de bits así que el casting o conversión hacia arriba también va a
ser lo más eficiente posible.
Vamos a comprobar esto.
Guardamos cambios y ejecutamos
así que podemos observar finalmente que el método que se mandó a llamar en este último caso es el método
que recibe los atributos de doble ya que el float se convirtió Adol y el char se convirtió a tipo entero
y el resultado es igual a 68 ya que se suma el valor de tres y posteriormente el valor de 65.
Recordemos que el carácter Char corresponde en decimal al valor de 65.
Por lo tanto se realizó la conversión de Char a tipo entero y se utiliza el valor decimal.
Por lo tanto el resultado de 3 más 65 tenemos el resultado de 68 bien por último se les deja realizar
la prueba paso a paso para que resuelvan cualquier duda extra que pudieran tener con el tema de sobrecarga
de métodos pero con esto ya debería quedar claro cómo funciona la sobrecarga de métodos en Java y cada
una de las reglas que debemos de considerar cuando estamos trabajando con este concepto.
Eso es todo por esta elección y nos vemos en el siguiente vídeo.
Saludos.