El documento describe el uso de polimorfismo y casting en Java. Explica que el polimorfismo permite que objetos de subclases sean tratados como instancias de su clase padre. El casting implícito convierte subclases a su tipo de clase padre, mientras que el casting explícito se requiere para la conversión inversa debido a razones de seguridad. También proporciona un ejemplo de código que ilustra cómo el mismo objeto de referencia Animal puede tomar la forma de un gato u otro perro y emitir sonidos diferentes a través
1. Uso de Polimorfismo.
El uso de Polimorfismo posee ciertos detalles que no fueron descritos en el ejemplo anterior, uno
de estos, que también tiene implicaciones en otros componentes es: Casting.
Uso de "Casting"
El término "Casting" viene de la palabra "Cast" que significa Molde, por lo que el termino literal es
Hacer un Molde, en Polimorfismo se lleva a cabo este proceso de "Casting" implícitamente, una
Guitarra se coloca en el molde de un Instrumento, un Triangulo en el molde de una Figura, sin
embargo, en ciertas ocasiones se requiere realizar un tipo de "Casting" que no es considerado
seguro en términos computacionales.
Anteriormente se mencionó que el "Casting" llevado a cabo con Polimorfismo es implícito, esto se
debe a que no se requiere de sintaxis especial, simplemente se convierte una Guitarra a un
Instrumento, sin embargo, para llevar una transformación en sentido opuesto se requiere de sintaxis
adicional para mantener la seguridad de transformación; analicemos: mientras se puede asegurar
que un Triangulo es una Figura ("Up-Casting"), una Figura no necesariamente es un Triangulo,
claro esta que lo puede ser, pero en Java se requiere definir explícitamente esta operación ("DownCasting").
El polimorfismo es una de las cualidades de más dificil comprensión de la POO. Una de las ventajas
de estos lenguajes es su flexibilidad y el polimorfismo una de las herramientas que potencian esta
cualidad. El polimorfismo tiene un uso muy gráfico cuando hacemos uso de la herencia.
El polimorfismo consiste en que toda referencia a un objeto de una clase específica puede tomar la
forma de una referencia a un objeto de una clase heredada a la suya. Con el polimorfismo (sig. Varias
formas) se consigue que las instancias de una clase padre puedan hacer uso de las funcionalidades
de la clases hijas: misma instancia que se comporta de varias (poli) maneras (morfismo).
Ejemplo:
Public class Animal(){
public void habla(){
System.out.println("No se que soy");
}
}
Public class Perro() extends Animal{
public void() habla(){
System.out.println("Guau");
}
}
Public class Gato() extends Animal{
public void() habla(){
System.out.println("Miau");
2. }
}
Public class Zoo(){
public static void main(String[] args) {
Animal animal = new Gato(); animal. Habla(); animal=new Perro(); animal. Habla();
}
}
El resultado por consola sera:
"Miau"
"Guau"