base (Referência de C#)base (C# Reference)

A palavra-chave base é usada para acessar membros de classe base de dentro de uma classe derivada:The base keyword is used to access members of the base class from within a derived class:

  • Chamar um método que foi substituído por outro método na classe base.Call a method on the base class that has been overridden by another method.

  • Especificar qual construtor de classe base deve ser chamado ao criar instâncias da classe derivada.Specify which base-class constructor should be called when creating instances of the derived class.

Um acesso de classe base é permitido somente em um construtor, em um método de instância ou em um acessador de propriedade de instância.A base class access is permitted only in a constructor, an instance method, or an instance property accessor.

É um erro usar a palavra-chave base de dentro de um método estático.It is an error to use the base keyword from within a static method.

A classe base que é acessada é a que é especificada na declaração de classe.The base class that is accessed is the base class specified in the class declaration. Por exemplo, se você especificar class ClassB : ClassA, os membros da ClassA são acessados da ClassB, independentemente da classe base da ClassA.For example, if you specify class ClassB : ClassA, the members of ClassA are accessed from ClassB, regardless of the base class of ClassA.

ExemploExample

Neste exemplo, as classes base Person e a classe derivada Employee têm um método chamado Getinfo.In this example, both the base class, Person, and the derived class, Employee, have a method named Getinfo. Usando a palavra-chave base, é possível chamar o método Getinfo na classe base, de dentro da classe 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 obter exemplos adicionais, consulte new, virtual e override.For additional examples, see new, virtual, and override.

ExemploExample

Este exemplo mostra como especificar o construtor da classe base chamado ao criar instâncias de uma classe 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)
*/

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee also