protected (Referencia de C#)
La palabra clave protected
es un modificador de acceso de miembro.
Nota:
Esta página trata sobre el modificador de acceso protected
. La palabra clave protected
también forma parte de los modificadores de acceso protected internal
y private protected
.
Un miembro protegido es accesible dentro de su clase y por parte de instancias de clase derivadas.
Para obtener una comparación de protected
con los demás modificadores de acceso, vea Niveles de accesibilidad.
Ejemplo 1
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. Por ejemplo, vea el siguiente 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;
}
}
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.
Los miembros de estructura no se pueden proteger porque la estructura no puede heredarse.
Ejemplo 2
En este ejemplo, la clase DerivedPoint
se deriva de Point
. Por lo tanto, puede acceder 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()
{
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
Si cambia los niveles de acceso de x
y y
a private, el compilador genera los 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 la sección Accesibilidad declarada de la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
- Palabras clave de C#
- Modificadores de acceso
- Niveles de accesibilidad
- Modificadores
- public
- private
- internal
- Security concerns for internal virtual keywords (Problemas de seguridad de palabras clave virtuales internas)