DE .NET, SQLSERVER Y MÁS, APRENDE CONMIGO!✔

Desarrollo de todo tipo de aplicaciones y Administración de Base de datos con Tecnología Microsoft


UNETE

Herencia de Clases en C#

0

 

Herencia

Una clase puede herendar de otra para extender o particularizar a la clase original. Heredar de una clase nos permite reutilizar su funcionalidad sin tener que comenzar desde cero. Una clase sólo puede heredar de otra, pero en cambio no hay límite a número de descendientes que pueda tener. Todas las clases forman parte de una jerarquía única de clases cuya raiz es la clase Object. Una jerarquía de clases bien diseñada se caracteriza por generalizar, de forma razonable, los nombres del espacio de un problema. De esta forma, podriamos tener una jerarquía de figuras geométricas con la siguiente estructura:




class Figura {}
class Rectangulo: Figura {}
class Cuadrado: Rectangulo {}
class Elipse: Figura {}
class Circulo: Elipse {}

Veamos como podemos utilizar la herencia para reutilizar código y datos de la clase Figura en las clases Rectangulo y Cuadrado:

// figura.cs
 
using System;
 
class Figura // implicitamente hereda de Object
{
  float alto, ancho;
 
  public Figura(float alto, float ancho)
  { 
    this.alto = alto; 
    this.ancho = ancho;
  }
 
  public float Alto { get { return alto; } set { alto = value; } }
  public float Ancho { get { return ancho; } set { ancho = value; } }
 
  public void Mostrar() 
  { 
    Console.WriteLine("{0}: {1}x{2}", GetType(), Alto, Ancho); 
  }
}
 
class Rectangulo: Figura // hereda de Figura
{
  public Rectangulo(float alto, float ancho): base(alto, ancho) {}
}
 
class Cuadrado: Rectangulo // hereda de Rectangulo
{
  public Cuadrado(float lado): base(lado, lado) {}
 
  public float Lado { get { return alto; } set { alto = ancho = value; } }
}
 
class Prueba
{ 
  public static void Main()
  {
    Figura f = new Figura(1, 2);
    f.Mostrar();
 
    Rectangulo r = new Rectangulo(3, 4);
    r.Mostrar();
    Console.WriteLine("alto de r = {0}", r.Alto);
 
    Cuadrado c = new Cuadrado(5);
    c.Mostrar();
    Console.WriteLine("Lado de c = {0}", c.Lado);
  }
}

Del anterior ejemplo debemos destacar varios aspectos:

·         Aunque no se indique explicitamente, todas las clases heredad de la clase Object.

·         Para hacer que una clase herede de otra debemos utilizar ":" (dos puntos) y el nombre de la clase de la que queremos heredar después de la declaración del nombre de la clase.

·         Se puede utilizar la palabra reservada base para referirnos al constructor de la clase de la que hemos heredado, de forma parecida a como utilizabamos this para referirnos al de la propia clase.

·         Como podemos ver en el ejemplo anterior, las clases derivadas de Figura, heredan tanto sus campos como sus métodos.

DEMOSTRACIÓN

En Visual Studio vamos a dar click en menú File à New à Project


En la Ventana emergente le damos click a Window, seleccionamos la opción “Console Application” y espacio Name colocamos el nombre del proyecto que para el Ejemplo es “Demo 5 20483” y luego presionamos el botón OK


Ahora procederemos para nuestro siguiente ejemplo a crear una biblioteca de clases, vamos a trabajar, para ello nos situamos en la solución de nuestro proyecto, le damos click derecho al mouse y nos dirigimos a Add à New Project


En la ventana que se despliega seleccionamos la opción ‘ClassLibrary’ y colocamos como nombre ‘LibreriaClase’ para luego a proceder a dar click al botón OK


En el archivo de la Librería de clases, situamos el puntero del mouse y damos click derecho y nos dirigimos a Add à New Items


En la Ventana emergente seleccionamos la opción de Class y colocamos como Nombre Persona


Luego realizamos este mismo pasó para la clase Trabajador, y nuestra librería tiene que quedar de la siguiente forma:


Procedemos a crear los atributos y métodos para la clase Persona


Procedemos a crear los atributos y métodos para la clase Trabajador heredando todas las propiedades de la clase Persona


En el archivo Program.cs escribiremos todo el código correspondiente a la ejecución de nuestro programa:

La salida de la consola sería la siguiente:








Tal vez te interesen estas entradas

No hay comentarios