base (Referencia de C#)base (C# Reference)

La palabra clave base se usa para acceder a los miembros de la clase base desde una clase derivada:The base keyword is used to access members of the base class from within a derived class:

  • Llamar a un método en la clase base que haya sido reemplazado por otro método.Call a method on the base class that has been overridden by another method.

  • Especificar a qué constructor de clase base se debe llamar cuando se crean instancias de la clase derivada.Specify which base-class constructor should be called when creating instances of the derived class.

Solo se permite el acceso a una clase base en un constructor, un método de instancia o un descriptor de acceso de propiedad de instancia.A base class access is permitted only in a constructor, an instance method, or an instance property accessor.

Usar la palabra clave base desde dentro de un método estático constituye un error.It is an error to use the base keyword from within a static method.

La clase base a la que se obtiene acceso es la especificada en la declaración de clase.The base class that is accessed is the base class specified in the class declaration. Por ejemplo, si especifica class ClassB : ClassA, se obtiene acceso a los miembros de ClassA desde ClassB, independientemente de la clase base de ClassA.For example, if you specify class ClassB : ClassA, the members of ClassA are accessed from ClassB, regardless of the base class of ClassA.

EjemploExample

En este ejemplo, la clase base, Person, y la clase derivada, Employee, tienen un método denominado Getinfo.In this example, both the base class, Person, and the derived class, Employee, have a method named Getinfo. Mediante el uso de la palabra clave base, es posible llamar al método Getinfo en la clase base desde la clase derivada.By using the base keyword, it is possible to call the Getinfo method on the base class, from within the derived class.

public class Person
{
    protected string ssn = "444-55-6666";
    protected string name = "John L. Malgraine";

    public virtual void GetInfo()
    {
        Console.WriteLine("Name: {0}", name);
        Console.WriteLine("SSN: {0}", ssn);
    }
}
class Employee : Person
{
    public string id = "ABC567EFG";
    public override void GetInfo()
    {
        // Calling the base class GetInfo method:
        base.GetInfo();
        Console.WriteLine("Employee ID: {0}", id);
    }
}

class TestClass
{
    static void Main()
    {
        Employee E = new Employee();
        E.GetInfo();
    }
}
/*
Output
Name: John L. Malgraine
SSN: 444-55-6666
Employee ID: ABC567EFG
*/

Para ver más ejemplos, consulte new, virtual y override.For additional examples, see new, virtual, and override.

EjemploExample

En este ejemplo se muestra cómo especificar el constructor de clase base al que se llama al crear instancias de una clase derivada.This example shows how to specify the base-class constructor called when creating instances of a derived class.

public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
/*
Output:
in BaseClass()
in BaseClass(int i)
*/

Especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also