Cómo utilizar la herencia en Visual C#

Resumen

En este artículo paso a paso se muestra cómo utilizar la herencia en Visual C#.


La herencia es un concepto importante orientado a objetos. Permite crear una jerarquía de clases relacionadas y reutilizar la funcionalidad definida en las clases existentes.

En los ejemplos siguientes, definirá una clase base que contiene campos y métodos para una cuenta bancaria genérica. A continuación, definirá una clase derivada que representa un tipo concreto de cuenta bancaria. La clase derivada heredará miembros de la clase base, reemplazará los miembros seleccionados y agregará nuevos miembros para el nuevo tipo de cuenta.

Requisitos previos

Conocimientos previos necesarios:
  • Sintaxis de C#
  • Conceptos orientados a objetos

Crear una nueva aplicación de consola

  1. Inicie Visual Studio y cree un nuevo proyecto de aplicación de consola de C# denominado UseInheritance.
  2. Guarde el proyecto.

Crear una clase base abstracta

  1. En el Explorador de soluciones, cambie a la vista de clases (si no puede encontrarla, haga clic en Vista de clases en el menú Ver). Haga clic con el botón secundario en el proyecto UseInheritance, seleccione Agregar y, a continuación, haga clic en Clase.

    Nota: en Visual C# .NET 2003, seleccione Agregar y, a continuación, haga clic en Agregar clase.
  2. En el cuadro de diálogo Agregar nuevo elemento, escriba el nombre de clase Account y, a continuación, haga clic en Agregar.

    Se muestra la clase Account. Observe la palabra clave. Agregue los modificadores de tipo público y abstracto a la clase para que tenga un aspecto similar al siguiente.
    public abstract class Account 
    {


    }

Escribir código para la clase base

  1. En la ventana de vista Código, agregue dos campos a la clase Account que representen el estado de cuentas y el nombre del titular de la cuenta:
    private string name;        // Solo accesible en la clase base
    protected double balance; // Accesible en la clase base y la clase derivada
  2. Modifique el constructor como se indica a continuación para iniciar estos campos:
    public Account(string nm, double bal)
    {
    this.name = nm;
    this.balance = bal;

    }
  3. Agregue los métodos siguientes a la clase. La palabra clave virtual significa que estos métodos pueden reemplazarse en las clases derivadas:
    public virtual void Credit(double amount)
    {
    this.balance += amount;
    }

    public virtual void Debit(double amount)
    {
    this.balance -= amount;
    }

    public virtual void Display()
    {
    Console.WriteLine("Name={0}, balance={1}", this.name, this.balance);

    }
  4. Agregue el método siguiente a la clase. Como este método no está marcado como virtual, no se puede reemplazar en las clases derivadas. Este método proporciona la posibilidad de cambiar el nombre del titular de la cuenta.
    public void ChangeName(string newName)
    {
    this.name = newName;

    }
  5. Agregue el método siguiente a la clase. La palabra clave abstract significa que este método debe anularse en las clases derivadas:
    public abstract double CalculateBankCharge();

Crear una clase derivada

  1. En la vista de clases, haga clic con el botón secundario en el proyecto UseInheritance. En el menú Acceso directo, elija Agregar y, a continuación, haga clic en Clase.
  2. En el cuadro de diálogo Agregar nuevo elemento, escriba SavingsAccount y, a continuación, haga clic en Agregar.
  3. Vea el código de la clase SavingsAccount.
  4. Cambie la definición de la clase SavingsAccount como se indica a continuación, de manera que SavingsAccount herede de Account:
    public class SavingsAccount : Account
    {


    }

Escribir código para la clase derivada

  1. Agregue un campo a la clase SavingsAccount:
    private double minBalance;   // Si el saldo cae por debajo de minBalance, 
    // el banco cobrará un recargo en la cuenta
  2. Modifique el constructor SavingsAccount para inicializar los campos de la clase base y de esta clase:
    public SavingsAccount(string nm, double bal, double min) 
    : base(nm, bal) // Llamar primero al constructor de la clase base
    {
    minBalance = min; // A continuación, iniciar los campos en esta clase

    }
  3. Agregue los métodos siguientes a la clase SavingsAccount. Estos métodos reemplazan a los métodos virtuales heredados de la clase base:
    public override void Debit(double amount)
    {
    if (amount <= balance) // Usar el saldo, heredado de la clase base
    base.Debit(amount); // Llamar a Debit, heredado de la clase base
    }
    public override void Display()
    {
    base.Display(); // Llamar a Display, heredado de la clase base
    Console.WriteLine("recargo de $5 si el saldo es inferior a ${0}", minBalance);

    }
  4. Se deben reemplazar todos los métodos abstractos de la clase base. Agregue el método siguiente a la clase SavingsAccount:
    public override double CalculateBankCharge()
    {
    if (balance < minBalance)
    return 5.00;
    else
    return 0.00;

    }

Comprobar que funciona

  1. Muestre el código para Class1.cs en la ventana Vista Código.
  2. En el método Main, cree un objeto SavingsAccount y muéstrelo como sigue:
    SavingsAccount sa = new SavingsAccount("Freda Smith", 100.00, 25);
    sa.Display();
  3. Agregue el siguiente código para llamar a métodos públicos en SavingsAccount o Account:
    sa.Credit(100);
    sa.Debit(180);
    sa.ChangeName("Freda Jones");
    sa.Display();
    Console.WriteLine("Cargo bancario: ${0}", sa.CalculateBankCharge());
  4. Genere la aplicación.
  5. Establezca un punto de interrupción al principio del método Main e inicie la aplicación en el depurador. Deténgase en cada instrucción y observe a qué métodos se llama durante la aplicación. La aplicación muestra la información siguiente en la consola:
    Nombre=Freda Smith, balance=100
    recargo de $5 si el saldo es inferior a $25
    Nombre=Freda Jones, balance=20
    recargo de $5 si el saldo es inferior a $25
    Gastos bancarios: $5
Propiedades

Id. de artículo: 307205 - Última revisión: 2 jul. 2013 - Revisión: 1

Comentarios