protected (Référence C#)
Mise à jour : novembre 2007
Le mot clé protected est un modificateur d'accès au membre. Un membre protégé est accessible dans sa classe et depuis les instances de classe dérivée. Pour obtenir une comparaison entre protected et les autres modificateurs d'accès, consultez Niveaux d'accessibilité.
Exemple
Un membre protégé d'une classe de base est accessible dans une classe dérivée seulement si l'accès s'effectue par le biais du type de la classe dérivée. Considérons par exemple le segment de code suivant :
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;
}
}
L'instruction a.x = 10 génère une erreur car elle figure au sein de la méthode statique Main, et pas dans une instance de la classe B.
Les membres de struct ne peuvent pas être protégés, car le struct ne peut pas être hérité.
Dans cet exemple, la classe DerivedPoint est dérivée de Point. Ainsi, vous pouvez accéder aux membres protégés de la classe de base directement à partir de la classe dérivée.
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 vous remplacez les niveaux d'accès de x et y par private, le compilateur affiche les messages d'erreur suivants :
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.
Spécification du langage C#
Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
3.5.1 Accessibilité déclarée
3.5.3 Accès protégé pour les membres d'instance
3.5.4 Contraintes d'accessibilité
10.3.5 Modificateurs d'accès
Voir aussi
Concepts
Référence
Modificateurs d'accès (Référence C#)
Niveaux d'accessibilité (Référence C#)