Latest web development tutorials

C # Herencia

La herencia es una programación orientada a objetos es uno de los conceptos más importantes. La herencia nos permite definir una clase sobre la base de otra clase para definir una clase, lo que hace que la creación y el mantenimiento de aplicaciones mucho más fácil. Sino que también favorece la reutilización de código y reducir el tiempo de desarrollo.

Cuando se crea una clase, los programadores no tienen que volver a escribir completamente nueva miembros de datos y las funciones miembro, sólo es necesario diseñar una nueva clase que hereda los actuales miembros de la clase pueden ser. Laclase base existente se llama una clase, la nueva clase se llama la clase derivada.

La realización de la idea de la herenciaque pertenece (ES-A) relación.Por ejemplo, un mamíferopertenece (IS-A) animales, perros pertenecientes a (IS-A)de los mamíferos, y por lo tantopertenecen alperro animales(IS-A).

Base y clases derivadas

Una clase se puede derivar de más de una clase o interfaz, lo que significa que puede heredar múltiples clases base o interfaces de datos y funciones.

Crear una clase derivada en C # sintaxis es la siguiente:

<Acess-especificador> class <BASE_CLASS>
{
 ...
}
clase <Derived_Class>: <BASE_CLASS>
{
 ...
}

Supongamos, hay una forma de la clase base, que es el rectángulo clase derivada:

using System;
InheritanceApplication espacio de nombres
{
   Forma de clases 
   {
      pública setWidth void (int w)
      {
         width = w;
      }
      pública setHeight void (int h)
      {
         height = h;
      }
      protegidos int ancho;
      protegidos int altura;
   }

   // Clase clase derivada Rectángulo: Forma
   {
      public int getArea ()
      { 
         volver (ancho * altura); 
      }
   }
   
   clase RectangleTester
   {
      static void main (String [] args)
      {
         Rect rectángulo = new Rectangle ();

         Rect.setWidth (5);
         Rect.setHeight (7);

         // Área de impresión de la Console.WriteLine objeto ( "Superficie total: {0}", Rect.getArea ());
         Console.ReadKey ();
      }
   }
}

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

Superficie total: 35

Inicializar la clase base

clase derivada hereda las variables miembro y métodos miembros de la clase base. Por lo tanto, el objeto principal debe ser creado antes de que se crea un objeto de la subclase. Puede inicializar la clase padre en la lista de miembros de inicialización.

El programa siguiente muestra este punto:

using System;
RectangleApplication espacio de nombres
{
   clase Rectangle
   {
      // Variables de miembro protegido de doble longitud;
      protegida de doble ancho;
      Rectángulo pública (doble L, doble w)
      {
         longitud = l;
         width = w;
      }
      GetArea doble pública ()
      {
         volver longitud * anchura;
      }
      Pantalla public void ()
      {
         Console.WriteLine ( "Longitud: {0}", longitud);
         Console.WriteLine ( "width: {0}", ancho);
         Console.WriteLine ( "Tamaño: {0}", getArea ());
      }
   } // Fin de la clase Rectangle  
   Tablero de la mesa de clase: Rectángulo
   {
      costo doble privada;
      Sobremesa pública (doble L, doble w): base (l, w)
      {}
      GetCost doble pública ()
      {
         doble costo;
         = costo getArea () * 70;
         coste de vuelta;
      }
      Pantalla public void ()
      {
         base.Display ();
         Console.WriteLine ( "Costo: {0}", getCost ());
      }
   }
   clase ExecuteRectangle
   {
      static void main (String [] args)
      {
         Tablero de la mesa t = nuevo tablero de la mesa (4.5, 7.5);
         t.Display ();
         Console.ReadLine ();
      }
   }
}

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

Longitud: 4.5
Anchura: 7,5
Área: 33.75
Costo: 2362.5

C # herencia múltiple

C # no soporta la herencia múltiple.Sin embargo, puede utilizar la interfaz para alcanzar la herencia múltiple. El programa siguiente muestra este punto:

using System;
InheritanceApplication espacio de nombres
{
   Forma de clases 
   {
      pública setWidth void (int w)
      {
         width = w;
      }
      pública setHeight void (int h)
      {
         height = h;
      }
      protegidos int ancho;
      protegidos int altura;
   }

   // Clase base PaintCOST
   PaintCOST interfaz pública 
   {
      int getCost (área int);

   }
   // Clase clase derivada Rectángulo: Forma, PaintCOST
   {
      public int getArea ()
      {
         volver (ancho * altura);
      }
      public int getCost (int área)
      {
         zona de retorno * 70;
      }
   }
   clase RectangleTester
   {
      static void main (String [] args)
      {
         Rect rectángulo = new Rectangle ();
         área int;
         Rect.setWidth (5);
         Rect.setHeight (7);
         = área Rect.getArea ();
         // Área de impresión de la Console.WriteLine objeto ( "Superficie total: {0}", Rect.getArea ());
         Console.WriteLine ( "Paint costo total: $ {0}", Rect.getCost (área));
         Console.ReadKey ();
      }
   }
}

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

Superficie total: 35
Pintar Costo total: $ 2450