Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C# - Herencia

Uno de los conceptos más importantes en la programación orientada a objetos es la herencia. La herencia nos permite definir una clase en términos de otra clase, lo que facilita la creación y el mantenimiento de una aplicación. Esto también brinda la oportunidad de reutilizar la funcionalidad del código y acelera el tiempo de implementación.

Al crear una clase, en lugar de escribir miembros de datos y funciones miembro completamente nuevos, el programador puede designar que la nueva clase debe heredar los miembros de una clase existente. Esta clase existente se llama base clase, y la nueva clase se conoce como la derivada clase.

La idea de herencia implementa el IS-A relación. Por ejemplo, mamífero ES A animal, perro ES-A mamífero por lo tanto perro IS-A animal también, y así sucesivamente.

Clases base y derivadas

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

La sintaxis utilizada en C# para crear clases derivadas es la siguiente −

<acess-specifier> class <base_class> {
   ...
}

class <derived_class> : <base_class> {
   ...
}

Considere una clase base Forma y su clase derivada Rectángulo −

Demostración en vivo
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Derived class
   class Rectangle: Shape {
      public int getArea() { 
         return (width * height); 
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();

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

         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Total area: 35

Inicializando Clase Base

La clase derivada hereda las variables miembro de la clase base y los métodos miembro. Por lo tanto, el objeto de superclase debe crearse antes de crear la subclase. Puede dar instrucciones para la inicialización de la superclase en la lista de inicialización de miembros.

El siguiente programa demuestra esto −

Demostración en vivo
using System;

namespace RectangleApplication {
   class Rectangle {
      
      //member variables
      protected double length;
      protected double width;
      
      public Rectangle(double l, double w) {
         length = l;
         width = w;
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle {
      private double cost;
      public Tabletop(double l, double w) : base(l, w) { }
      
      public double GetCost() {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display() {
         base.Display();
         Console.WriteLine("Cost: {0}", GetCost());
      }
   }
   class ExecuteRectangle {
      static void Main(string[] args) {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Length: 4.5
Width: 7.5
Area: 33.75
Cost: 2362.5

Herencia múltiple en C#

C# no admite la herencia múltiple . Sin embargo, puede usar interfaces para implementar la herencia múltiple. El siguiente programa demuestra esto −

Demostración en vivo
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Base class PaintCost
   public interface PaintCost {
      int getCost(int area);
   }
   
   // Derived class
   class Rectangle : Shape, PaintCost {
      public int getArea() {
         return (width * height);
      }
      public int getCost(int area) {
         return area * 70;
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();
         int area;
         
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         
         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.WriteLine("Total paint cost: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Total area: 35
Total paint cost: $2450

Lenguaje C

  1. Clase y objeto de C#
  2. Palabra clave estática de C#
  3. Clase anidada de C#
  4. Plantillas de clase de C++
  5. Herencia de Python
  6. Clase anónima de Java
  7. Clase Java ObjectOutputStream
  8. Genéricos de Java
  9. Clase de archivo Java
  10. C# - Estructura del programa
  11. C# - Sintaxis básica