Polimorfismo

Definición - ¿Qué significa polimorfismo?

El polimorfismo, en C #, es la capacidad de objetos de diferentes tipos de proporcionar una interfaz única para diferentes implementaciones de métodos. Por lo general, se usa en el contexto de enlace tardío, donde el comportamiento de un objeto para responder a una llamada a los miembros de su método se determina en función del tipo de objeto en tiempo de ejecución. El polimorfismo permite redefinir métodos en clases derivadas.

El polimorfismo forma uno de los conceptos fundamentales de la programación orientada a objetos, junto con la encapsulación y la herencia.

Techinfo explica el polimorfismo

La sobrecarga de métodos, la sobrecarga del constructor y la sobrecarga del operador se consideran polimorfismo en tiempo de compilación (también llamado estático o ad-hoc) o enlace temprano. La anulación de método, que implica herencia y funciones virtuales, se denomina polimorfismo en tiempo de ejecución (también llamado dinámico, de inclusión o subtipificación) o enlace tardío. En el caso del polimorfismo en tiempo de compilación, la identificación del método sobrecargado a ejecutar se lleva a cabo en tiempo de compilación. Sin embargo, en el polimorfismo en tiempo de ejecución, el tipo de objeto desde el que se llamará al método anulado se identifica en tiempo de ejecución.

En C #, el polimorfismo se implementa a través de la herencia y el uso de la palabra clave "virtual". Las clases derivadas heredan los miembros de la clase base, excepto los constructores, según sus niveles de accesibilidad. Por lo tanto, el compilador genera el código para verificar e identificar el tipo de objeto correcto (al que apunta el tipo de referencia) en tiempo de ejecución y el método apropiado para ser llamado.

Un ejemplo de polimorfismo es una clase base de empleado, que incluye todos los detalles básicos sobre los empleados. Las clases como empleado y gerente podrían heredar de la clase base de empleado con implementaciones específicas (anulando métodos virtuales) donde sea necesario en las clases derivadas.

Esta definición se escribió en el contexto de C #