Polimorfismo

En la programación orientada a objetos, el polimorfismo (del griego que significa "tener múltiples formas") es la característica de poder asignar un significado o uso diferente a algo en diferentes contextos, específicamente, permitir una entidad como una variable, una función , o que un objeto tenga más de una forma. Hay varios tipos diferentes de polimorfismo.

1) Se puede permitir que una variable con un nombre dado tenga diferentes formas y el programa puede determinar qué forma de la variable usar en el momento de la ejecución. Por ejemplo, una variable llamada USERID puede ser capaz de ser un entero (número entero) o una cadena de caracteres (quizás porque el programador quiere permitir que un usuario ingrese una ID de usuario como un número de empleado - un entero - o con un nombre - una cadena de caracteres). Al darle al programa una forma de distinguir qué formulario se está manejando en cada caso, se puede reconocer y manejar cualquier tipo.

2) Una función nombrada también puede variar según los parámetros que se le proporcionen. Por ejemplo, si se le da una variable que sea un número entero, la función elegida sería buscar una coincidencia con una lista de números de empleados; si la variable fuera una cadena, buscaría una coincidencia con una lista de nombres. En cualquier caso, ambas funciones serían conocidas en el programa con el mismo nombre. Este tipo de polimorfismo a veces se conoce como sobrecarga.

En C ++, por ejemplo, el operador conocido como el signo más (+), que es efectivamente una función con nombre simple, puede asignarse para operar en dos objetos de manera que los sume (quizás la forma más común de la operación +) o, como en la búsqueda booleana, un + puede indicar un "y" lógico (lo que significa que ambas palabras separadas por el operador + deben estar presentes para que se devuelva una cita). En otro contexto, el signo + podría significar una operación para concatenar los dos objetos o cadenas de letras a cada lado del signo +.

A un operador dado también se le puede dar otro significado cuando se combina con otro operador. Por ejemplo, en el lenguaje C ++, un "++" después de una variable puede significar "incrementar este valor en 1". El significado de un operador en particular se define como parte de una definición de clase. Dado que el programador puede crear clases, el programador también puede definir cómo funcionan los operadores para esta clase de objetos; en efecto, el programador puede redefinir el lenguaje informático.

3) El polimorfismo puede significar, como en el lenguaje ML, un tipo de datos de "cualquiera", de modo que cuando se especifica para una lista, una lista que contiene cualquier tipo de datos puede ser procesada por una función. (Por ejemplo, si una función simplemente determina la longitud de una lista, no importa qué tipos de datos haya en la lista).

4) En PHP, polimorfismo significa que si B es descendiente de A y una función puede aceptar A como parámetro, también puede aceptar B.