Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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)