Categorías
Common Methods

¿Cómo genera código el compilador de Java para métodos sobrecargados y anulados?

Aquí hay un ejemplo simple de Java que muestra polimorfismo: sobrecarga y anulación.

El polimorfismo significa que las funciones asumen diferentes formas en diferentes momentos. En caso de tiempo de compilación, se denomina sobrecarga de funciones. La sobrecarga permite acceder a métodos relacionados mediante el uso de un nombre común. A veces se le llama polimorfismo ad hoc, a diferencia del polimorfismo paramétrico.

class A {
	public void M(int i){
		System.out.println("int");
	}
 
	public void M(String s){
		//this is an overloading method
		System.out.println("string");
	}
}
 
class B extends A{
	public void M(int i){
		//this is overriding method
		System.out.println("overriden int");
	}
}
public static void main(String[] args) {
	A a = new A();
	a.M(1);
	a.M("abc");
 
	A b = new B();
	b.M(1234);
}

Desde la perspectiva del compilador, ¿cómo se genera el código para las llamadas de función correctas?

La sobrecarga estática no es difícil de implementar. Al procesar la declaración de una función sobrecargada, un nuevo enlace la asigna a una implementación diferente. Durante el proceso de verificación de tipos, el compilador analiza el tipo real del parámetro para determinar qué función utilizar.

La sobrecarga dinámica permite elegir diferentes implementaciones de una función en el tipo de tiempo de ejecución de un parámetro real. Es una forma de envío dinámico.

  Java hashCode () y equals () Contrato para el método de conjunto contiene (Objeto o)

El envío dinámico también se usa para implementar la anulación de métodos. El método anulado está determinado por el tipo de objeto real durante el tiempo de ejecución.

Para comprender el despacho dinámico, hay una publicación sobre el diseño de objetos en la memoria.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *