El Polimorfismo es una característica esencial de la programación orientada a objetos.
El punto medular en el Polimorfismo es separar el Qué del Como, en un lenguaje mortal significa enfocarse en el que hace sin importar como lo hace. Existen diferentes formas de implementar el polimorfismo esta vez veremos como hacerlo Sobrescribiendo (overriding). Antes de continuar es importante recalcar que se debe tener claro el concepto de Herencia para poder entender el Polimorfismo. Ahora si un ejemplo:
Usaremos nuevamente nuestra clase Persona y le añadiremos el método hablar()
En los siguientes ejemplos aplicaremos el ya famoso Polimorfismo sobrescribiendo el método hablar() en nuestra clase Mexicano y Gringo
Y por último la clase para probar nuestro código con algunas explicaciones
El punto medular en el Polimorfismo es separar el Qué del Como, en un lenguaje mortal significa enfocarse en el que hace sin importar como lo hace. Existen diferentes formas de implementar el polimorfismo esta vez veremos como hacerlo Sobrescribiendo (overriding). Antes de continuar es importante recalcar que se debe tener claro el concepto de Herencia para poder entender el Polimorfismo. Ahora si un ejemplo:
Usaremos nuevamente nuestra clase Persona y le añadiremos el método hablar()
/** * * @author http://javerosanonimos.blogspot.com/ */ public class Persona { public String nombre=""; public short edad=0; public char sexo='x'; public Persona(){ } public String hablar(){ return ":)"; } }
En los siguientes ejemplos aplicaremos el ya famoso Polimorfismo sobrescribiendo el método hablar() en nuestra clase Mexicano y Gringo
/** * * @author http://javerosanonimos.blogspot.com/ */ public class Mexicano extends Persona { public Mexicano(){ } @Override public String hablar(){ return "Hola"; } }
/** * * @author http://javerosanonimos.blogspot.com/ */ public class Gringo extends Persona { public Gringo(){ } @Override public String hablar(){ return "Hello"; } }
Y por último la clase para probar nuestro código con algunas explicaciones
/** /** * * @author http://javerosanonimos.blogspot.com/ */ public class ProbadoraCodigo { public static void main(String[] args){ //Tenemos 2 objetos Mexicano Persona mx=new Mexicano(); Mexicano mx2=new Mexicano(); //Aqui 2 obejtos Gringo Persona gr=new Gringo(); Gringo gr2=new Gringo(); //Y uno Persona Persona per=new Persona(); /*Al ejecutar podran notar que el resulado es el mismo para las siguientes 2 líneas porque ambos usan el metodo hablar() de la clase Mexicano y no de la clase Persona aun cuando en el primero el tipo de Objeto es Persona esto se debe a que en el momento de la ejecucion se determina que el método apunta a una instancia de la clase Mexicano y no Persona. Lo mismo sucede con las siguientes 2 líneas de la clase Gringo, esta funcionalidad del polomorfismo aparentemente no tiene sentido pero el asunto es que no siempre sera conveniente usar una u otra Clase en particular, así esto nos permite varias posibilidades para una misma solución */ System.out.println("Persona/Mexicano: "+mx.hablar()); System.out.println("Mexicano/Mexicano: "+mx2.hablar()); //- System.out.println("Persona/Gringo: "+gr.hablar()); System.out.println("Gringo/Gringo: "+gr2.hablar()); // Por último solo para probar usamos el método hablar() de la clase Persona System.out.println("Persona: "+per.hablar()); } }
System.out.println("Persona/Mexicano: "+mx.hablar()); IMPRIME:hola
ResponderBorrarSystem.out.println("Mexicano/Mexicano: "+mx2.hablar()); IMPRIME:hola
System.out.println("Persona/Gringo: "+gr.hablar()); IMPRIME:hellow
System.out.println("Gringo/Gringo: "+gr2.hablar()); IMPRIME:hellow
System.out.println("Persona: "+per.hablar()); IMPRIME: :)
Publicar un comentario