Me encontré con esta respuesta perfecta de un usuario de quora "Monis Yousuf". Él explica esto perfectamente. Lo estoy poniendo aquí para otros.
Encuadernación es principalmente un concepto de programación orientada a objetos relacionada con el polimorfismo.
En primer lugar, entérese de qué Polimorfismo es. Los libros dicen que significa "un nombre y formas múltiples". Es cierto, pero demasiado abstracto. Tomemos un ejemplo de la vida real.Usted va a un "Doctor", un médico puede ser un especialista en ORL, Neurocirujano, Homeópata, etc.
Aquí, un "médico" es un nombre y puede tener varios tipos; cada uno realizando su propia función. Esto es polimorfismo en la vida real.
Sobrecarga de función: Este concepto representa la vinculación estática. La sobrecarga de funciones puede definirse aproximadamente como dos o más métodos (funciones) que tienen el mismo nombre pero diferentes firmas (incluyendo número de parámetros, tipos de parámetros, diferentes tipos de retorno) se llaman métodos (o funciones) sobrecargados.
Supongamos que tiene que calcular el área de un rectángulo y un círculo. Vea el siguiente código: -
class CalculateArea {
private static final double PI = 3.14;
/*
Method to return area of a rectangle
Area of rectangle = length X width
*/
double Area(double length, double width) {
return (length * width);
}
/*
Method to return area of circle
Area of circle = π * r * r
*/
double Area(double radius) {
return PI * radius * radius;
}
}
En el código anterior, hay dos métodos "Área" con diferentes parámetros. Este escenario califica como sobrecarga de función.
Ahora, llegándonos a la verdadera pregunta: ¿Cómo es esta vinculación estática?
Cuando llama a cualquiera de las funciones anteriores en su código, debe especificar los parámetros que está pasando. En este escenario, se pasa a cualquiera:
- dos parámetros de tipo double [¿Qué va a llamar el primer método, a calcular son de un rectángulo]
- parámetro individual de tipo double [¿Qué va a llamar a la segunda método, para calcular el área de un círculo]
Dado que, en tiempo de compilación el compilador de Java pueden averiguar, que funcionan para llamar, es tiempo de compilación (o estática) de unión.
Anulación de función: Anulación de función es un concepto que se muestra en herencia. Puede definirse aproximadamente como: cuando hay un método presente en una clase padre y su subclase también tiene el mismo método con la MISMA firma, se llama anulación de función. [Hay más en ello, pero en aras de la simplicidad, he escrito esta definición] Será más fácil de entender con la siguiente pieza de código.
class ParentClass {
int show() {
System.out.println("I am from parent class");
}
}
class ChildClass extends ParentClass{
int show() {
System.out.println("I am from child class");
}
}
class SomeOtherClass {
public static void main (String[] s) {
ParentClass obj = new ChildClass();
obj.show();
}
}
En el código anterior, el método show()
se ser manipulables como la misma firma (y nombre) está presente en ambas clases de padres e hijos.
En la tercera clase, SomeOtherClass
, Una variable de referencia (obj) del tipo ParentClass
tiene el objeto de ChildClass. A continuación, se llama al método show(
) desde la misma variable de referencia (obj).
Una vez más, la misma pregunta: ¿Cómo es este enlace dinámico?
En tiempo de compilación, el compilador comprueba que la variable de referencia sea del tipo ParentClass
y comprueba si el método show()
está presente en esta clase. Una vez que comprueba esto, la compilación es exitosa.
Ahora, cuando el programa EJECUTAR, ve que el objeto es ChildClass
y, por lo tanto, ejecuta el método show()
del ChildClass
. Dado que esta decisión se toma en RUNTIME, se llama Enlace dinámico (o Polimorfismo en tiempo de ejecución).
Link para la respuesta original
Si se trata de la tarea, que va a estar mejor pedir una crítica de su respuesta planificada; no por la respuesta abierta. –
@Daniel L, lo marqué como tarea. Esta no es directamente la pregunta en mi tarea. Tengo que clasificar un montón de cosas como estáticas o dinámicas y estoy tratando de aclarar en mi cabeza cuál es cuál a través de esta pregunta. Si las personas quieren responder, lo harán. – KingNestor
@KingNestor: Sí, vi que era tarea;] Veo lo que quiere decir ahora. –