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