57.    Elección dinámica de método (concepto)

En inglés recibe varios nombres:

dynamic method lookup

dynamic method binding

dynamic method dispatch

En todo caso se refiere al hecho de que cuando una variable es polimórfica y puede referirse a objetos de varias subclases, el método que se ejecuta depende del tipo del objeto en tiempo de ejcución. Es decir, no depende del tipo de la variable, sino del tipo del objeto.

Se ve más fácilmente con un ejemplo.

§  Sean dos clases, A y B

§  sea B una extensión a A

§  A define un método

§  B redefine el mismo método

§  Cuando una variable de tipo A se refiere a un objeto de tipo B,
las llamadas al método que existe en ambas clases, elige el método de B

 

class A

public class A {

   public String getMe() { return "Soy A"; }

}

class B extends A

public class A {

   @Override

   public String getMe() { return "Soy A"; }

}

ejecución:

A a = new A();

B b = new B();

A ab= new B();

System.out.println(a.getMe());

System.out.println(b.getMe());

System.out.println(ab.getMe());

 

 

// upcasting

Soy A

Soy B

Soy B    // sabe que es B

 

Temas relacionados

Vademécum