protected (Referencia de C#)

Actualización: noviembre 2007

La palabra clave protected es un modificador de acceso a miembros. Un miembro protegido es accesible dentro de su clase y por instancias de clases derivadas. Encontrará una comparación de protected con los otros modificadores de acceso en Niveles de accesibilidad.

Ejemplo

Se puede obtener acceso a un miembro protegido de una clase base en una clase derivada sólo si el acceso se realiza a través del tipo de la clase derivada. Por ejemplo, considere el siguiente segmento de código:

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 realiza dentro del método estático Main y no de una instancia de la clase B.

Los miembros de una estructura no se pueden proteger, ya que la estructura no se puede heredar.

En este ejemplo, la clase DerivedPoint se deriva de Point. Por lo tanto, puede obtener acceso a los miembros protegidos de la clase base directamente desde la clase derivada.

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 se cambian los niveles de acceso de x e y a private, el compilador producirá los siguientes mensajes de error:

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

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

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 3.5.1 Accesibilidad declarada

  • 3.5.3 Acceso protegido para miembros de instancia

  • 3.5.4 Restricciones de accesibilidad

  • 10.3.5 Modificadores de acceso

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

Modificadores de acceso (Referencia de C#)

Niveles de accesibilidad (Referencia de C#)

Modificadores (Referencia de C#)

public (Referencia de C#)

private (Referencia de C#)

internal (Referencia de C#)

Otros recursos

Referencia de C#