En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.
Clase Abstracta Animal.
123456789101112131415161718192021222324252627282930publicabstractclassAnimalimplementsIAnimal {privateString nombre;/*** Constructor de la clase Animal* @param nombre*/publicAnimal (String nombre){this.nombre=nombre;System.out.println("Constructor Animal, "+"nombre del animal : "+this.nombre);}/*** Retorna el valor de nombre* @return*/publicString getNombre(){returnnombre;}/*** Metodo Abstracto tipoAnimal, la implementación depende* de las clases concretas que extiendan la clase Animal*/publicabstractvoidtipoAnimal();}Como vemos tenemos la clase Abstracta que implementa la Interface IAnimal pero como mencionamos al principio, esta clase no esta obligada a implementar el método comunicarse() ya que también es clase abstracta.Tenemos el método tipoAnimal() el cual si debe ser declarado como abstracto, evidenciamos también el atributo nombre el cual lo declaramos como private y solo accederemos a el en nuestro árbol de herencia, con el aplicamos un poquito el concepto de Encapsulación (pero no de la forma ideal, podemos ver una pequeña definición en la entrada sobre conceptos Básicos).

No hay comentarios:
Publicar un comentario