Latest web development tutorials

C # polimorfismo

El polimorfismo significa que hay múltiples formas.En paradigma de la programación orientada a objetos, el polimorfismo se expresa a menudo como "una interfaz, múltiples funciones."

El polimorfismo puede ser estática o dinámica.polimorfismo estático en la función de respuesta se produce en tiempo de compilación.Enpolimorfismo dinámico, la función de respuesta se produce en tiempo de ejecución.

polimorfismo estático

En tiempo de compilación, las funciones del mecanismo de conexión y los objetos se denomina enlace anticipado, también conocido como enlace estático. C # ofrece dos técnicas para implementar el polimorfismo estático. Son los siguientes:

  • la sobrecarga de funciones
  • La sobrecarga de operadores

La sobrecarga de operadores discutirá en la siguiente sección, vamos a discutir la siguiente sobrecarga de funciones.

la sobrecarga de funciones

Puede estar en el mismo rango para el mismo nombre de función tiene múltiples definiciones. funciones definidas deben ser diferentes unos de otros puede ser una lista de parámetros tipos de parámetros, también puede ser un número de diferentes parámetros. No se puede sobrecargar solamente por el tipo de devolución de la declaración de la función.

El siguiente ejemplo demuestra varios de la misma funciónprint (), para la impresión de diferentes tipos de datos:

using System;
PolymorphismApplication espacio de nombres
{
   clase PrintData
   {
      impresión void (int i)
      {
         Console.WriteLine ( "int Impresión: {0}", i);
      }

      impresión vacío (doble f)
      {
         Console.WriteLine ( "flotar Impresión: {0}", f);
      }

      impresión sin efecto (s cadena)
      {
         Console.WriteLine ( "cadena de impresión: {0}", s);
      }
      static void main (String [] args)
      {
         p = PrintData nueva PrintData ();
         // Invocar de impresión para imprimir un número entero p.print (5);
         // Invocar de impresión para imprimir p.print flotador (500.263);
         // Invocar imprimir al p.print cadena de impresión ( "Hola C ++");
         Console.ReadKey ();
      }
   }
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

int Impresión: 5
flotador de impresión: 500.263
cadena de la impresión: Hola C ++

polimorfismo dinámico

C # permite el uso de la palabraabstracta para crear una clase abstracta, implementación de la interfaz proporciona para una parte de la clase.Cuando una clase derivada hereda de la clase abstracta para lograr completa.clase abstracta contiene métodos abstractos, métodos abstractos pueden implementarse como una clase derivada.Las clases derivadas tienen funciones más especializadas.

Tenga en cuenta que los siguientes son algunas reglas para las clases abstractas:

  • No se puede crear una instancia de una clase abstracta.
  • No se puede declarar un método abstracto fuera de una clase abstracta.
  • Al colocar delante de las palabras clave de definición de clasecerrada, la clase se puede declarar como clases cerradas.Cuando se declara una clasesellada, que no puede ser heredada.Una clase abstracta no puede ser declarado como sellado.

El programa siguiente muestra una clase abstracta:

using System;
PolymorphismApplication espacio de nombres
{
   Forma clase abstracta
   {
      int área pública abstracta ();
   }
   clase Rectangle: Forma
   {
      int longitud privada;
      int ancho privada;
      Rectángulo pública (int a = 0, int b = 0)
      {
         longitud = a;
         width = b;
      }
      área int public override ()
      { 
         Console.WriteLine ( "área de la clase Rectángulo:");
         retorno (longitud ancho *); 
      }
   }

   clase RectangleTester
   {
      static void main (String [] args)
      {
         Rectángulo R = new Rectangle (10, 7);
         doble a = r.area ();
         Console.WriteLine ( "Tamaño: {0}", a);
         Console.ReadKey ();
      }
   }
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Rectángulo del tamaño de clase:
Superficie: 70

Cuando una función se define en las necesidades de la clase que se ejecutarán en una clase derivada, puede utilizarlos métodos virtuales.método virtual se declara usando la palabra clavevirtual.métodos virtuales pueden ser implementados de manera diferente en diferentes clases heredadas. Las llamadas a los métodos virtuales se produce en tiempo de ejecución.

polimorfismo dinámico se logra a través declases y métodosabstractosvirtuales.

El programa siguiente muestra este punto:

using System;
PolymorphismApplication espacio de nombres
{
   Forma de clases 
   {
      protegidos int ancho, altura;
      Forma pública (int a = 0, int b = 0)
      {
         width = a;
         height = b;
      }
      área pública virtual int ()
      {
         Console.WriteLine ( "zona de los padres:");
         return 0;
      }
   }
   clase Rectangle: Forma
   {
      Rectángulo pública (int a = 0, int b = 0): base (a, b)
      {

      }
      área int public override ()
      {
         Console.WriteLine ( "área de la clase Rectángulo:");
         volver (ancho * altura); 
      }
   }
   Triángulo de clase: Forma
   {
      Triángulo pública (int a = 0, int b = 0): base (a, b)
      {
      
      }
      área int public override ()
      {
         Console.WriteLine ( "zona de clase Triángulo:");
         volver (ancho * altura / 2); 
      }
   }
   clase de llamadas
   {
      pública CallArea vacío (sh Forma)
      {
         int a;
         a = sh.area ();
         Console.WriteLine ( "Tamaño: {0}", a);
      }
   }  
   probador de clase
   {
      
      static void main (String [] args)
      {
         Persona que llama c = nueva persona que llama ();
         Rectángulo R = new Rectangle (10, 7);
         Triángulo t = new triángulo (10, 5);
         c.CallArea (r);
         c.CallArea (t);
         Console.ReadKey ();
      }
   }
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Rectángulo del tamaño de clase:
Superficie: 70
área de la clase Triángulo:
Superficie: 25