/ / ¿Se puede considerar la sobrecarga de métodos como una forma de describir el polimorfismo en Java? - java, oop, polimorfismo, sobrecarga de métodos

¿Se puede considerar la sobrecarga de métodos como una forma de describir el polimorfismo en Java? - java, oop, polimorfismo, sobrecarga de método

Por lo tanto, estaba estudiando desde Head First Java y ahí leí -

Un método sobrecargado es solo un método diferente que tiene el mismo nombre de método, no tiene nada que ver con la herencia y el polimorfismo.

Sin embargo, tengo otro libro famoso llamado como Java - La referencia completa por Herbert Schildt y en ese libro, leí:

La sobrecarga de métodos es una de las formas en que JavaSoporta el polimorfismo. La sobrecarga de métodos admite el polimorfismo porque es una forma en que Java implementa el paradigma de "una interfaz, múltiples métodos".

¿Cuál de ellos es correcto?

Respuestas

2 para la respuesta № 1

¿Se puede considerar la sobrecarga de métodos como una forma de describir el polimorfismo? en java?

No, estos son dos conceptos diferentes.

Creo que entendiste incorrectamente lo que el autor quiere decir.

Destacé en negrita la parte importante:

La sobrecarga de métodos es una de las formas en que Java admite el polimorfismo. Método de sobrecarga soporta el polimorfismo. porque es una manera que Java implementa el paradigma "una interfaz, múltiples métodos".

Simplemente significa que la sobrecarga y el polimorfismo no son incompatibles.

Por ejemplo, puede tener una interfaz que define un método sobrecargado:

public interface Doable{
void doX(String s);
void doX(Integer s)
}

Suponer MyDoable una implementación de la misma y MyChildDoable una subclase de MyDoable.

Cuando escribes :

MyDoable myDoable = new MyChildDoable();
myDoable.doX("a")

el compilador enlazará el método invocado a void doX(String s); (sobrecarga) pero en tiempo de ejecución, el método de la instancia (MyChildDoable) se utilizará (polimorismo)


4 para la respuesta № 2

Para responder a su pregunta en el título, no, no puede usar la sobrecarga de métodos para describir el polimorfismo.

La sobrecarga de métodos es cuando una clase tiene dos o más métodos con el mismo nombre, la única diferencia son sus parámetros. Este es un concepto completamente diferente al polimporismo.

El polimorfismo es la capacidad de un objeto para adoptar muchas formas. Esto ocurre cuando se utiliza una referencia de clase primaria para referirse a un objeto de clase secundaria.

Por ejemplo, si me encargaran crear algunostipo de aplicación para un zoológico y quería hacer un seguimiento de los animales usando clases. Haría una clase llamada "Animal" y clases adicionales para cada animal, "León", "Águila", "Delfín". Después de declarar las clases de animales como subclases, puedo usar el concepto de polimorfismo para crear Leones, Águilas y Delfines que son del tipo "Animal".


1 para la respuesta № 3

El polimorfismo no es de un tipo, hay diferentes tipos de polimorfismo. Por favor refiérase a este maravilloso enlace - Polimorfismo de java para entenderlo mejor.

La sobrecarga admite el polimorfismo, la invocación del comportamiento polimórfico se basa en los argumentos de tipo pasados ​​y se lleva a cabo de manera ad hoc.


0 para la respuesta № 4

Por lo tanto, existe esta idea de polimorfismo de tiempo de compilación y polimorfismo de tiempo de ejecución. La idea de polimorfismo implica la misma interfaz pero diferentes implementaciones.

La forma en que funciona el polimorfismo "tiempo de compilación" esmediante la sobrecarga de funciones, es decir, tiene el mismo nombre de función pero con diferente arrity. Supongo que esto es a lo que el segundo segundo libro se refiere como "polimorfismo soportado a través de la sobrecarga de métodos". Sin embargo, estrictamente hablando, la interfaz también incluye la arrity, lo que significa que la sobrecarga del método podría no constituir polimorfismo.

El polimorfismo en tiempo de ejecución es donde el tipo real deun objeto dado es lo que dicta qué implementación debe usarse. Aquí es donde la interfaz / clase base y la clase derivada entran en escena. Esta sería la definición más precisa de polimorfismo, al menos desde un punto de vista de orientación de objeto.


0 para la respuesta № 5

Anulando - esto es sobre el polimorfismo.

public class Base {
public void print() {
System.out.println("base");
}
}

public class Extend extends Base {
@Override
public void print() {
System.out.println("Extend");
}
}

Echemos un vistazo a la salida

new Base().print();

imprimirá "Base"

new Extend().print();

imprimirá "Extender".

Sobrecarga: se trata de la sobrecarga de métodos en una clase con diferentes parámetros:

public class ABC {
// method 1
void method(int a){
System.out.println("method 1");
}

// method 2
void method(int a, int b){
System.out.println("method 2");
}
}

Echemos un vistazo a la salida

ABC abc = new ABC();
abc.method(5);

invocará el método (int) e imprimirá el "método 1"

abc.method(1,2)

invocará el método (int, int) e imprimirá el "método 2"

Anulación: esta es una característica de tiempo de ejecución;

Sobrecarga - esta característica de tiempo de compilación; todo método de sobrecarga (con un nombre) debe ser del mismo tipo de devolución o nulo.