Tabla de contenido
¿Qué es el polimorfismo en C#?
El polimorfismo proviene de dos palabras griegas: escuela politécnica y transformar. La palabra escuela politécnica aquí representa muchos, y transformar significa Formularios. Es la capacidad del objeto en la programación adquirir diferentes formas.
El polimorfismo permite el tratamiento de objetos de clases distintas como provienen de la misma clase. Esto se puede hacer utilizando el concepto de herencia, ya que permite que las clases derivadas tomen o hereden las propiedades de la clase base.
Tipos de polimorfismo en C#
El polimorfismo se puede clasificar en dos tipos en función de cuándo ocurre:
Sobrecarga de métodos
La sobrecarga de métodos puede definir múltiples métodos que tengan el mismo nombre pero que contienen diferentes parámetros. El compilador decide el método que se llamará en función de los argumentos dados al método. Usando la sobrecarga de métodos, podemos hacer tareas que son similares pero que tengan diferentes parámetros de entrada.
Método primordial
El método anular en C# es una técnica que permite que una clase derivada proporcione su propia implementación de un método que ya proporciona su clase base. La primordial del método es como la función virtual de C++. Cuando un método en una clase derivada tiene el mismo nombre, el mismo tipo de retorno y el mismo parámetros que un método en su clase base, se dice que el método en la clase derivada anula el método en la clase base.
En el polimorfismo, el método base anulado debe ser virtual, abstracto o anulación. Anular los métodos implementando miembros de clase base existentes de manera nueva. La anulación del método se logra utilizando las palabras clave virtuales y anular.
Ejemplos de polimorfismo en C#
A continuación se muestra un código de ejemplo que explica los métodos que anulan y sobrecargan en C#:
Ejemplo 1: sobrecarga de métodos
Aquí, en el ejemplo a continuación, hemos definido múltiples métodos en una sola clase. Todos estos métodos comparten el mismo nombre pero contienen diferentes parámetros.
usando el sistema;El código anterior da dos números a sumar, y demuestra sobrecarga de métodos Cª#. El Calculatesum El método se sobrecarga para aceptar dos parámetros enteros y dos parámetros dobles, respectivamente.
El método principal crea una instancia de la clase de programa y llama al método de calculación dos veces, una vez con dos argumentos enteros y una vez con dos argumentos dobles.
Cuando se ejecuta el programa, imprime la suma de los dos números pasados al Calculatesum Método utilizando la interpolación de cadena para crear el mensaje de salida. La siguiente salida se puede ver en la consola:
Ejemplo 2: Método Anulando
Este ejemplo demuestra el concepto de anulación de métodos, donde una clase derivada puede proporcionar su propia implementación de un método heredado de su clase base.
usando el sistema;Aquí hay una clase base que se llama Clase de forma. La clase de forma contiene un método virtual llamado Dibujar. Aquí, una palabra clave virtual es una indicación de que una clase derivada puede anular el método definido.
La clase del rectángulo anula el Dibujar método y se deriva de la clase de forma. La clase rectángulo tiene su propio conjunto de propiedades para la implementación. En este caso, el método de dibujo de la clase de rectángulo se imprime Dibujar un rectángulo en lugar de Dibujar una forma.
Luego, en Principal(), Se crea una instancia de la clase de forma y se llama su método de dibujo. Entonces se crea una instancia de la clase rectángulo y se llama su método de dibujo.
Debido a que la clase de rectángulo anula el método de dibujo de la clase de forma, cuando llamamos el método de dibujo en el objeto rectángulo, se llama la implementación de la clase rectángulo, y se llama Dibujar un rectángulo se imprime en la consola. Cuando se ejecuta el programa, saldrá:
Cómo usar el polimorfismo en C#
Después de conocer el concepto de polimorfismo en C#, ahora cubriremos los pasos para usarlo en la programación de C#.
Paso 1: Defina la clase base
El primer paso es definir la clase base que contiene los métodos o propiedades que serán compartidas por todas las clases derivadas. La clase base se define usando el clase palabra clave:
animal de clase públicaEl código anterior contiene una clase base Animal que tiene un método virtual Hacer sonido. La palabra clave virtual muestra que la clase derivada anulará el método definido.
Paso 2: Defina las clases derivadas
El siguiente paso es definir las clases derivadas que provienen de la clase base. En C#, podemos definir una clase derivada utilizando el ":" operador.
Perro de clase pública: animalEl ejemplo anterior contiene dos clases de accionamiento Perro y Gato, y ambas clases toman propiedades de la clase base que se llama animal. Ambas clases anulan el Hacer sonido Método con su implementación.
Paso 3: Use el polimorfismo
El paso final es usar el polimorfismo en el código. Ahora definiremos instancias de las clases derivadas y llamaremos a sus métodos utilizando la referencia de la clase base.
Animal myanimal = nuevo animal ();Aquí creamos instancias de las clases de animales, perros y gatos. Después de eso, el Hacer sonido Se llama a un método en cada instancia. Desde el Hacer sonido El método es virtual, la implementación real que se llama depende del tipo real de la instancia. Esto significa que cuando llamamos mydog.Makeound () o Mycat.Makeound (), el Hacer sonido El método se llamará en la clase de perros o gatos, respectivamente.
Código de ejemplo
El siguiente es el código combinado de los pasos explicados anteriormente:
usando el sistema;Después de ejecutar el código anterior, la siguiente salida se puede ver en la consola:
Conclusión
Se puede escribir el uso del polimorfismo en C# un código que administra múltiples tipos de objetos. En C#, podemos usar el polimorfismo definiendo una clase base, creando clases derivadas que heredan de la clase base y utilizando la referencia de clase base para llamar a los métodos de las clases derivadas. Siguiendo los pasos descritos en el artículo anterior, cualquiera puede usar el concepto de polimorfismo en C#.