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

A palavra-chave protected é um modificador de acesso de membro.The protected keyword is a member access modifier.

Esta página aborda o acesso protected.This page covers protected access. A palavra-chave protected também faz parte dos modificadores de acesso protected internal e private protected.The protected keyword is also part of the protected internal and private protected access modifiers.

Um membro protegido é acessível dentro de sua classe e por instâncias da classe derivada.A protected member is accessible within its class and by derived class instances.

Para obter uma comparação de protected com os outros modificadores de acesso, consulte Níveis de acessibilidade.For a comparison of protected with the other access modifiers, see Accessibility Levels.

ExemploExample

Um membro protegido de uma classe base será acessível em uma classe derivada somente se o acesso ocorrer por meio do tipo da classe derivada.A protected member of a base class is accessible in a derived class only if the access occurs through the derived class type. Por exemplo, considere o seguinte segmento de código:For example, consider the following code segment:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        A a = new A();
        B b = new B();

        // Error CS1540, because x can only be accessed by
        // classes derived from A.
        // a.x = 10; 

        // OK, because this class derives from A.
        b.x = 10;
    }
}

A instrução a.x = 10 gera um erro porque ela é feita dentro do método estático Main e não em uma instância da classe B.The statement a.x = 10 generates an error because it is made within the static method Main, and not an instance of class B.

Membros de struct não podem ser protegidos porque o struct não pode ser herdado.Struct members cannot be protected because the struct cannot be inherited.

ExemploExample

Nesse exemplo, a classe DerivedPoint é derivada de Point.In this example, the class DerivedPoint is derived from Point. Portanto, você pode acessar os membros protegidos da classe base diretamente da classe derivada.Therefore, you can access the protected members of the base class directly from the derived class.

class Point 
{
    protected int x; 
    protected int y;
}

class DerivedPoint: Point 
{
    static void Main() 
    {
        DerivedPoint dpoint = new DerivedPoint();

        // Direct access to protected members:
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine("x = {0}, y = {1}", dpoint.x, dpoint.y); 
    }
}
// Output: x = 10, y = 15

Se você alterar os níveis de acesso de x e y para private, o compilador emitirá as mensagens de erro:If you change the access levels of x and y to private, the compiler will issue the error messages:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

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

Para obter mais informações, veja Acessibilidade declarada na Especificação da Linguagem C#.For more information, see Declared accessibility in 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