Tatiana, miembro de este gran staff, nos hizo el favor de escribir este escrito porque domina muy bien dicho tema.
Solución:
A lo que se refiere el libro es polimorfismo, más concretamente a través de despacho dinámico.
En pocas palabras, imagina las siguientes clases:
public class Person
public Person()
public void introduceYourself()
public class Texan extends Person
public Texan()
public void introduceYourself()
System.out.printLn("Howdy y'all!");
public class NewYorker extends Person
public NewYorker()
public void introduceYourself()
System.out.printLn("Yo. You got a problem with that?");
Ahora, vamos a crear una variable de referencia de tipo Person
.
Person myBFF;
Vamos a instanciarlo
myBFF = new NewYorker();
Vamos a pedirle que se presente
myBFF.introduceYourself();
Esto imprime:
Yo. ¿Tienes algún problema con eso?
Ahora, cambiemos tu BFF a un tejano.
myBFF = new Texan();
Llamemos a esa misma línea nuevamente y pidamos a nuestro mejor amigo que se presente.
myBFF.introduceYourself();
Esto imprime:
¡Hola a todos!
En cada caso, la variable de referencia que estaba usando era del tipo Persona. El ejemplo de la variable, en cada caso, fue Neoyorquino y tejano respectivamente. Ese tipo de instancia determina qué versión de presentarte() se llama.
Una variable de referencia es el tipo que especifica en el lado izquierdo (una variable que contiene un tipo de referencia). A lo que se refiere el autor es cuando el lado derecho difiere. Considerar
Object a = new Foo();
System.out.println(a.toString());
Si Foo
anula el Object.toString()
(es decir, si Foo
provee un public String toString()
) método entonces está Foo
‘s toString
que se invoca (no Object
‘s). Consulte también Anulación y ocultación de métodos en los tutoriales de Java.
Una variable de referencia se ve así:
Coordinate cords; //Cords is the ref. var
Dentro de ese variable de referencia es una dirección dentro de la memoria RAM de su computadora que almacena la attributes de ese objeto. Dado que no instanciamos (en realidad hicimos un objeto de) la dirección del objeto cords antes mencionado es null
Las variables de referencia contienen direcciones en partes reservadas de la memoria.
cords = new Coordinate(0.0,0.0,0.0);
Ahora dentro de la memoria RAM de la computadora hay un espacio reservado que contiene tres variables de tipo flotante. Tras la instanciación, una variable de referencia contiene la dirección. Entonces, ¿qué podemos hacer con las direcciones en Java?
Nada de utilidad. Las direcciones de memoria de Java son inútiles y no puedes verlas (aunque se parecen a 0xFFFFFFF)
Para una representación visual haga clic aquí
Al final de todo puedes encontrar las referencias de otros gestores de proyectos, tú aún tienes la libertad de mostrar el tuyo si lo deseas.