Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Sobrecarga de métodos y constructores

10/38
Recursos

A veces necesitamos que dos o más métodos de una misma clase tengan el mismo nombre, pero con diferentes argumentos o distintos tipos de argumentos/valores de retorno.

Afortunadamente, Java nos permite ejecutar código y métodos diferentes dependiendo de los argumentos que reciba nuestra clase.

public class Calculadora {
  // Los dos parámetros y el valor de retorno son de tipo int
  public int suma(int a, int b) {
    return a + b;
  }

  // Los dos parámetros y el valor de retorno son de tipo float
  public float suma(float a, float b) {
    return a + b;
  }

  // Un parámetro es de tipo int, mientras que el otro parámetro
  // y el valor de retorno son de tipo float
  public float suma(int a, float b) {
    return a + b;
  }
}

El uso más común de la sobrecarga de métodos es la sobrecarga de constructores para instanciar objetos de formas distintas dependiendo de la cantidad de argumentos que enviamos.

public class Doctor {
  static int id = 0;
  String name;
  String speciality;

  public Doctor() {
    this.name = "Nombre por defecto";
    this.speciality = "Especialidad por defecto";
  }

  public Doctor(String name, String speciality) {
    this.name = name;
    this.speciality = speciality;
  }
}

Aportes 50

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Definitivamente anahí tiene una metodologia de enseñanza excelente sus clases se hacen 100% comprensibles

En la universidad le cogí fastidio a Java, me incliné por otros lenguajes, ahora por necesidad debido a un nuevo empleo, debo aprender Java, gracias a la profe le estoy cogiendo cariño a este lenguaje, ojala en la universidad enseñaran asi.

La sobrecarga de métodos consiste en utilizar el mismo nombre en varios métodos, cada uno con distintos argumentos.

La palabra reservada this, hace referencia a todos los elementos que componen esa clase.

La sobrecarga de métodos consiste en crear diferentes funciones que, en realidad, hacen lo mismo, pero soportan diferentes tipos y cantidades de argumentos.

La sobrecarga de constructores es lo mismo, pero con constructores. 😅

Anahi vuelve!

Excelente clase de sobrecarga y constructores, aquí en Java no existen los parámetros opcionales, por ende se usa la sobrecarga

La sobrecarga de métodos y constructores en Java permite tener un identificador con diferentes variables o con mas variables.

public class Greeting {
    // Greet a person
    public static void greeting(String name){
        System.out.println("Hello " + name);
    }

    // Greet two people
    public static void greeting(String name, String nameTwo){
        System.out.println("Hello " + name + " and " + nameTwo);
    }
    
    public static void main(String[] args) {
        greeting("David");
        greeting("Jonathan", "David");
    }
}

🤔 Utilizamos la sobrecarga de constructores para tener opciones al momento de instanciar un objeto.



llevo varios años programando en java, se me hacen entretenidos los videos de la profe, quizá un poco basicos pero son buenos.

muy bien explicado el tema de sobrecarga

Creo que falta recortar este vídeo 😕



Muy buenas clases con Anahí!

This, se refiere al objeto que acabas de crear.

la manera de enseñar es muy buena, me ha ayudado a entender de una mejor manera los conceptos y los ejemplos.

La sobrecarga funciona para tener diferentes comportamientos con el mismo nombre del método.

Si borran el metodo Doctor() que tenemos sin parametros nos ayudará a que dé un error cada que se quiera instanciar la clase sin ningún parámetro. De lo contrario podremos seguir instanciando la clase sin parametros(que no creo que sea lo que queremos).

super buena explicación

Excelente clase, muy bien explicada

Les comparto mis apuntes de la clase, para tener nociendo de lo que se ve en la clase en un solo vistaso

Excelente explicación Anahi

entendí que esta metodología o herramienta es muy útil para cuando necesitemos crear un objeto nuevo (con el construcotr), podamos crearlo usando diferentes parámetros.

Excelente clase 😃

Creando método sobrecargado

Instanciando Doctor

Resultado:

Llevé esta clase el periodo pasado en mi universidad y no entendí bien muchos conceptos, gracias a ella tengo mas claro todo y sigo aprendiendo. Muchas gracias Anahí. 😃

El resultado es el mismo si coloco

----Patient(String name){
System.out.println(name);
----}

y

----Patient(String name){
this.name = name;
System.out.println(name);
----}

Entonces cual es la diferencia, tengo esa duda pueden ayudarme, gracias.

excelente explicación

Sobrecarga es la capacidad de un lenguaje de programación, que permite nombrar con el mismo identificador diferentes variables u operaciones. La sobrecarga de constructores se usa para inicializar objetos.

Esta clase no la editaron, please

En la sobrecarga de métodos a veces se le dice que “cambia la firma” a pesar de ser el mismo nombre, puede ser que el tipo de retorno o parametros que recibe sean distintos, es por eso que el compilador los ve como métodos distintos

Java diferencia los métodos sobrecargados con base en el número y tipo de parámetros que tiene el método y no por el tipo que devuelve.

Entonces:

int suma(int a, int b, int c) {
	...
}

int suma(int x, int y, int z) {
	...
}

No es una sobrecarga válida, puesto que para Java, es el mismo método y dará un error de compilación.

excelente 😃

Estupenda clase acerca del termino sobrecarga instructora Anahí, la desventaja de usarlo es que debemos ser muy organizados para evitar las confusiones que generan su uso masivo, pero puede ser bastante útil al ayudarnos a abarcar la mayoría de soluciones en un problema.

:0 Sin saberlo le atiene jaja, precisamente lo que dije en el ejercicio anterior es exactamente lo que explican en esta clase :0

La verdad no lo tenia muy claro, pero ya con esta clase todo cambio. Genial.

mi reto anterior está malo :’( . Esto es trampa

Super claro gracias 😃

La sobrecarga es muy util para definir comportamientos en nuestro proyecto. Y tener un minimo de informacion para realizar ciertos comportamientos de nuestras clases.

En base de datos esta técnica es muy util.

Esto podría ser el mismo concepto del pilar de la programación OOP, el polimorfismo.

Muy buenas las clases, pero por qué tienen que explicar las cosas dos veces? Vuelve a explicar muchisimos detales que ya fueron vistos en POO y el curso introductorio a Java SE

buena explicación anahi

<h2>Sobrecarga</h2>
Es cuando tenemos dos o más métodos con el mismo nombre pero con estas diferencias:

  1. El número de parámetros es diferente
  2. El tipo de los parámetros es diferente
  3. El tipo de retorno es diferente

Clase 12: Sobrecarga de métodos y constructores

Para los que les apetezca tomar la clase en Eclipse iré subiendo mi código; hay pequeñas diferencias con Intellij, por no decir ninguna, pero con Eclipse se puede trabajar igual de bien. NOTA: Solo subiré la jerarquía y lo que haya sido modificado, tendrán los archivos no modificados en las clases anteriores.

Jerarquía del proyecto


Archivo: Doctor.java; Constructor: Doctor(String, String)

public Doctor(String name, String specialty) {
		System.out.println("El nombre del Doctor asignado es: " + name);
		id++;
		this.name = name;
		this.specialty = specialty;
	}


Archivo: Main.java

package mymedicalappointment;

import static ui.UIMenu.*;

public class Main {

	public static void main(String[] args) {
		
		Doctor myDoctor = new Doctor("Anahí Salgado", "Pediatría");
		System.out.println(myDoctor.name);
		System.out.println(myDoctor.specialty);
	}
}

La sobrecarga es nombre a diferentes métodos con el mismo nombre pero con argumentos diferentes.

Importante aclaración del this Por si acaso hay alguien que no lo entiende del todo.

NO hace referencia a la clase, sino al objeto.
Recuerden que las clases son moldes, las clases no se ejecutan no “viven” en tiempo de ejecución. Los objetos sí.

En este ejemplo, this sirve para señalarse a si mismo e indicar que el valor del atributo del objeto instanciado, será igual a los parámetros recibidos por el constructor.

public class Patient {
    String name;
    String email;
    String address;
    String phoneNumber;
    String birthday;
    double weight;
    double height;
    String blood;


    public Patient(String name, String email){
        this.name  = name;
        this.email = email;
    }

}```

Sobrecarga de métodos y constructores

Hasta ahora se han visto dos formas de llamar métodos, la forma común mediante un objeto y la otra utilizando static.

<h4>Sobrecarga</h4>

A veces necesitamos que dos o más métodos tengan el mismo nombre per con diferentes argumentos. Los argumentos pueden ser diferentes e incluso el valor que retornan.

Ejemplo:
En esta clase calculadora existen 3 métodos llamados suma, pero cada método recibe y retorna un tipo de dato diferente.

<h4>Sobrecarga de constructores</h4>

La sobrecarga de constructores se usa para inicializar objetos.

Con el siguiente constructor:

public class Doctor{
		String name, specialty;
    public Doctor(){
		}
}

Los valores toman ese valor inicial por defecto , o sea que todas las variables de la clase Doctor están vacías.

Pero si añadimos parámetros al constructor, como name y specialty, nos aseguramos de que todas las instancias que se creen tendrán esos atributos con un valor. Esto es la sobrecarga de constructor.

public class Doctor{
		String name, specialty;
    public Doctor(String name, String specialty){
				this.name = name;
				this.specialty = specialty;
		}
}

This hace referencia a todos los elementos que componen esa clase, al usar this name hace referencia al name de la clase Doctor y le da el valor de la variable name que recibió como parámetro el constructor. Esto es para que la variable no se inicialice en null.

Para los que esten confundidos con a cual varaible se está haciendo referencia con “this.<var>”: