protected (Referência de C#)
A palavra-chave protected
é um modificador de acesso de membro.
Observação
Esta página aborda o acesso protected
. A palavra-chave protected
também faz parte dos modificadores de acesso protected internal
e private protected
.
Um membro protegido é acessível dentro de sua classe e por instâncias da classe derivada.
Para obter uma comparação de protected
com os outros modificadores de acesso, consulte Níveis de acessibilidade.
Exemplo 1
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. Por exemplo, considere o seguinte segmento de código:
class A
{
protected int x = 123;
}
class B : A
{
static void Main()
{
var a = new A();
var 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.
Membros de struct não podem ser protegidos porque o struct não pode ser herdado.
Exemplo 2
Nesse exemplo, a classe DerivedPoint
é derivada de Point
. Portanto, você pode acessar os membros protegidos da classe base diretamente da classe derivada.
class Point
{
protected int x;
protected int y;
}
class DerivedPoint: Point
{
static void Main()
{
var dpoint = new DerivedPoint();
// Direct access to protected members.
dpoint.x = 10;
dpoint.y = 15;
Console.WriteLine($"x = {dpoint.x}, y = {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:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
Especificação da linguagem C#
Para obter mais informações, veja Acessibilidade declarada na Especificação da Linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.