protected (Referencia de C#)protected (C# Reference)

La palabra clave protected es un modificador de acceso de miembro.The protected keyword is a member access modifier.

Esta página trata sobre el modificador de acceso protected.This page covers protected access. La palabra clave protected también forma parte de los modificadores de acceso protected internal y private protected.The protected keyword is also part of the protected internal and private protected access modifiers.

Un miembro protegido es accesible dentro de su clase y por parte de instancias de clase derivadas.A protected member is accessible within its class and by derived class instances.

Para obtener una comparación de protected con los demás modificadores de acceso, vea Niveles de accesibilidad.For a comparison of protected with the other access modifiers, see Accessibility Levels.

EjemploExample

Un miembro protegido de una clase base es accesible en una clase derivada únicamente si el acceso se produce a través del tipo de clase 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 ejemplo, vea el siguiente 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;
    }
}

La instrucción a.x = 10 genera un error porque se ha creado en el método estático Main y no en una instancia de clase 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.

Los miembros de estructura no se pueden proteger porque la estructura no puede heredarse.Struct members cannot be protected because the struct cannot be inherited.

EjemploExample

En este ejemplo, la clase DerivedPoint se deriva de Point.In this example, the class DerivedPoint is derived from Point. Por lo tanto, puede acceder a los miembros protegidos de la clase base directamente desde la clase 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

Si cambia los niveles de acceso de x y y a private, el compilador genera los mensajes de error: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.

Especificación del lenguaje C#C# language specification

Para obtener más información, vea la sección Accesibilidad declarada de la Especificación del lenguaje C#.For more information, see Declared accessibility in 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