viernes, 12 de febrero de 2010

base

Como se que el uso de la palabra base en C# para heredar tiende a traer diversas controversias, aquí muestro una muy buena información acerca de base y de algunas formas de como utilizarla, quizas diferente a como la he dado en clases de la universidad.
base

La palabra clave base se utiliza para obtener acceso a los miembros de la clase base desde una clase derivada:

  • Realice una llamada a un método de la clase base reemplazado por otro método.

  • Especifique a qué constructor de la clase base se debe llamar para crear instancias de la clase derivada.

El acceso a una clase base sólo se permite en un constructor, en un método de instancia o en un descriptor de acceso a una propiedad de instancia.

Es incorrecto utilizar la palabra clave base desde dentro de un método estático.

Ejemplo:

En este ejemplo, tanto la clase base, Persona, como la clase derivada, Empleado, poseen un método denominado VerInformacion. Mediante la palabra clave base, se puede realizar una llamada al método VerInformacion de la clase base desde la clase derivada.


// Accediendo a miembos de una clase base
using System;
public class Persona
{
    protected string cedula = "001-12345-9";
    protected string nombre = "Jonathan Nunez";

    public virtual void VerInformacion()
    {
        Console.WriteLine("Nombre: {0}", nombre);
        Console.WriteLine("Cedula: {0}", cedula);
    }
}
class Empleado : Persona
{
    public string id = "JN123456";
    public override void VerInformacion()
    {
        // Llamando el metodo VerInformacion desde la clase base:
        base.VerInformacion();
        Console.WriteLine("Empeado ID: {0}", id);
    }
}

class ClassPrueba
{
    static void Main()
    {
        Empleado E = new Empleado();
        E.VerInformacion();
    }
}

Este ejemplo muestra cómo especificar el constructor de la clase base al que se realiza la llamada cuando se crean instancias de una clase derivada.

using System;
public class ClaseBase
{
    int num;
    public ClaseBase()
    {
        Console.WriteLine("Dentro de la Clase Base()");
    }

    public ClaseBase(int i)
    {
        num = i;
        Console.WriteLine("Dentro de la Clase Base con parametro(int i)");
    }

    public int VerNum()
    {
        return num;
    }
}

public class ClaseDerivada : ClaseBase
{
    // El constructor llamara la ClaseBase.ClaseBase()
    public ClaseDerivada() : base()
    {
    }

    // Este constructor llamara la ClaseBase.ClaseBase(int i)
    public ClaseDerivada(int i) : base(i)
    {
    }

    static void Main()
    {
        ClaseDerivada cd = new ClaseDerivada();
        ClaseDerivada cd1 = new ClaseDerivada(1);
    }
}
Resultados
Nombre: Jonathan Nunez
Cedula: 001-12345-9
Empleado ID: JN123456
Espero desde estos ejemplos usando base puedan entender lo suficiente como para meter mano con ello. Si desean mas informacion sobre virtual u override luego posteare sobre ello con algunos ejemplos quizas.

No hay comentarios.:

Publicar un comentario

Preguntas;Comentarios;Aportes;Criticas Positivas;Recomendaciones.